module double_value(pixel_value, clk, rst, out)
input clk, rst
input [7:0] pixel_value
output reg out
always @(posedge clk or negedge rst) begin
if (!rst) begin
out <= 1'b0
end
else begin
if (pixel_value <8'd127) begin
out <= 1'b0
end
else begin
out <= 1'腊大b1
end
end
end
endmodule
这个你不能一开始就是用VHDL设计,我做循环频谱处理,给你说过程,也行首旅许对你有用,先用matlab仿真,这一步很重要验证你的方法是不是正确的,这也为你后续的VHDL设计测试做铺垫,因为你设计的vhdl代码需要测试数据,那么就从这里来, 第二步,使用c语言编写算法,这一步的工作是让你熟悉图像边缘检测算法的每一个步骤是如何做到的,因为VHDL是电路标书语言,要对每一BIT都要清楚,C语言的过程可以让你在设计VHDL之前就清楚了,最后一步是转换,只有前两个步骤都做好了,你才可以进行VHDL设计。要不然你设计好了VHDL代码芹虚,你测试都不知档凳道怎么测试,哪里出错你都不知道,有了C语言的过程,你可以对某一个子模块进行调试。我这里有六位的module time_display(clk_100,hour,minute,second,led_light,sm_seg)
input clk_100
input [4:0] hour
input [5:0] minute
input [5:0] second
output [5:0] led_light
output [7:0] sm_seg//假设这里用的是8段数码管
reg [5:0] led_light
reg [7:0] sm_seg
reg [3:0] led
reg [2:0] led_count
always @ (posedge clk_100)
begin
if(led_count==5)
led_count<=3'b0
else
led_count<=led_count+3'b001
case(led_count)
3'b000:
begin
led_light<=6'b00_0001
led<=second%10
end
3'b001:
begin
led_light<=6'b00_0010
led<=second/10
end
3'b010:
begin
led_light<=6'b00_0100
led<=minute%10
end
3'b011:
begin
led_light<=6'b00_1000
led<=minute/10
end
3'b100:
begin
led_light<=6'b01_0000
led<=hour%10
end
3'b101:
begin
led_light<=6'b10_0000
led<=hour/10
end
endcase
end
always @ (led_light)
begin
case(led)
4'h0:sm_seg=8'hc0//"0"念高
4'h1:sm_seg=8'hf9//"1"
4'h2:sm_seg=8'ha4//"2"
4'h3:sm_seg=8'hb0//碰岩"3"
4'h4:sm_seg=8'h99//"4"
4'h5:sm_seg=8'h92//"5"
4'h6:sm_seg=8'h82//"6"
4'h7:sm_seg=8'hf8//"7"
4'h8:sm_seg=8'仔吵尺h80//"8"
4'h9:sm_seg=8'h90//"9"
default:sm_seg=8'hc0//"0"
endcase
end
endmodule
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)