verilog做十进制计数器的时候。一定要用阻塞赋值

本文通过一个十进制计数器的Verilog实现,阐述了阻塞赋值(=)与非阻塞赋值(<=)的区别。在计数过程中,使用非阻塞赋值会导致计算顺序问题,从而产生错误结果。而改用阻塞赋值后,计数结果正确,确保了变量更新的即时性。
摘要由CSDN通过智能技术生成

 

在做本实验的过程中,深切感受到阻塞赋值=和非阻塞赋值<=的差别。

reg flag1;

always@(posedge signal)

begin

         if (clk_10k) begin

                   flag1 = 1;

                   //freq = freq + 4'd2;

                   //adapt(freq,freq);

                   //freq <= cnt;

                   cnt_high = cnt_high + 28'd2;

                   if (cnt_high[3:0] > 4'd9) begin

                            cnt_high[3:0] = cnt_high[3:0] - 4'd10;

使用Verilog实现一个慢速的十进制计数器的代码如下: ``` module slow_decimal_counter(clk, reset, out); input clk, reset; output reg [3:0 out; reg [3:0 count; always @(posedge clk or posedge reset) begin if(reset) count <= 0; else if(count == 9) count <= 0; else count <= count + 1; end always @(posedge clk) begin if(reset) out <= 0; else out <= count; end endmodule ``` 这个慢速的十进制计数器使用一个4位的寄存器(count)来存储当前的计数值,每当时钟上升沿到来时,计数器会增加1。当计数器达到9时,会被重置为0。输出(out)会根据计数器的值进行更新。 请注意,这只是一个简单的慢速十进制计数器的实现,并不考虑实际的硬件约束和优化。实际的设计中可能需要添加其他逻辑来实现更复杂的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于FPGA的数字跑表设计](https://blog.csdn.net/qq_21394333/article/details/103473985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [计算机组成原理复习题](https://blog.csdn.net/qq_43717119/article/details/111589606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值