
如果数码管,你就要输出可能不止4位,计数器是输出4位,然后,每一位判断输出显示一个数字,如:
0000 -->数字0,7段LED数码管,可能就是 7‘兆好轿b011_1111(分别控制7段数码管的一段,其实就是是否点亮袜配数码管)
0001-->数字1,7段LED数码管,可能就是 7’b000_0110
always @ (in)
begin
case (in)
4'b0000: seg<=7'b0111111
4'b0001: seg<=7'b0000110
4'b0010: seg<=7'b1011011
4'b0011: seg<=7'b1001111
4'b0100: seg<=7'b1100110
4'b0101: seg<=7'b1101101
4'b0110: seg<=7'b1111101
4'b0111: seg<=7'b0000111
4'b1000: seg<=7'b1111111
4'b1001: seg<=7'b1101111
4'b1010: seg<=7'b0000000
default:seg<=7'bx
endcase
仅供参考,如有帮助,请采纳,谢谢!
学always循环体怎么用, 掌握时序电路的写法. 你上面隐薯的都是组合电路.
也可用dff或dffe直接例化d触发器, 格式大致是d1 dff (.clk(??), .d(??), .q(??), .clr(??), .set(??) ).
得引入时钟信号,触发d>q的传递.
初学verilog, 综合(编灶衡者译)过程中所有的warning都要视为error一一消除. 除非你非常熟练知道每个warning确实不拦猛会影响结果.
初学verilog, 综合完,在菜单内找RTL viewer看看电路框图,是不是你设想的形式.语法精通后不必看.
RTL无误后进行仿真. 先功能,后时序,都没问题即可写入FPGA了.
举个简单点的例子,如下中弯。
设计一个4bit的计数器,在记到最大值时输出一个信号
module counter_16 ( input clk, input rst_n, input cnt_in ,output reg cnt_out )
reg [3:0] cnt
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt <= 4'b0
else if (cnt_in) cnt <= cnt +1'b1
else cnt <= cnt
end
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt_out <= 1'b0
else if (cnt_in &&cnt == 4'b1111) cnt_out <= 1'链搏b1
else cnt_out <= 1'b0
end
endmodule
这实际上设计了一个16进制计数器其中的一位,你可以例化多个相同模块,将低位的卖唤闷cnt_out连接到高位的cnt_in,级联成一个任意位数的16进制计数器。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)