【FPGA】Verilog:时序电路设计 二进制计数器 计数器 分频器 时序约束_二进制计数器电路(1)

本文介绍了使用Verilog进行时序电路设计,包括二进制计数器和分频器的实现。示例代码展示了不同条件下的计数逻辑,并给出了慢速时钟分频器的实现,用于将高频时钟转换为1Hz的低频信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

end
endmodule



通用型的二进制计数器一般具备更多功能,例如可以增/减计数、预置初值、同步清零、暂停等。74LS161就是一种常用的可预置4位二进制同步加法计数器。其功能表如下图表:



![](https://img-blog.csdnimg.cn/929e76a71dec4e78a03d916ee7049817.png)​






|  |  |
| --- | --- |
| 输入 | 输出 |
|  |  | P | T | CP | D0 | D1 | D2 | D3 | Q0 | Q1 | Q2 | Q3 |
| *0* | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | *0* | *0* | *0* | *0* |
| *1* | *0* | Ⅹ | Ⅹ | ↑ | *D0* | *D1* | *D2* | *D3* | *D0* | *D1* | *D2* | *D3* |
| *1* | *1* | *1* | *1* | ↑ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | 计数 |
| *1* | *1* | *0* | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | 保持 |
| *1* | *1* | Ⅹ | *0* | Ⅹ | Ⅹ | Ⅹ | Ⅹ | Ⅹ | 保持 |


#### 0x01 利用IP核构造计数器


(1)根据上述74LS161的原理和参考代码,在vivado中设计计数电路:



module CNT161( input CR, input CP, input [3:0] D , input LD, input EP, input ET, output wire [3:0] Q);
wire [3:0] Din;
reg [3:0] Dout;
assign Din=D;
assign Q=Dout;
always@(posedge CP or negedge CR) begin
if (CR0) Dout&

设计二进制计数器分频器时,掌握基本的时序逻辑和硬件描述语言Verilog的使用是至关重要的。为了更深入地了解这一点,你可以参考《Verilog实现60进制计数器时序逻辑分频》一书。该资源详细介绍了如何利用Verilog编程语言和FPGA平台实现计数器分频器设计。 参考资源链接:[Verilog实现60进制计数器时序逻辑分频](https://wenku.youkuaiyun.com/doc/36f51r94kr?spm=1055.2569.3001.10343) 首先,我们来设计一个简单的4二进制计数器。在Verilog中,我们可以使用always块来描述时序逻辑,通过组合逻辑来实现计数器加法操作。以下是一个简单的4二进制计数器设计示例: ```verilog module binary_counter( input clk, // 时钟信号 input reset, // 异步复信号 output reg [3:0] count // 4计数输出 ); always @(posedge clk or posedge reset) begin if (reset) count <= 4'b0000; // 异步复计数器 else count <= count + 1'b1; // 递增计数器 end endmodule ``` 接着,我们要用74LS74触发器构成一个二分频器。在Verilog中,可以使用always块和非阻塞赋值来实现分频器的逻辑。以下是一个二分频器的代码示例: ```verilog module divide_by_two( input clk_in, // 输入时钟信号 output reg clk_out // 分频后的输出时钟信号 ); reg [1:0] count; // 内部计数器,用于追踪时钟边沿 always @(posedge clk_in or negedge clk_in) begin if (posedge clk_in) count <= count + 1'b1; // 上升沿时计数器1 else count <= count - 1'b1; // 下降沿时计数器1 clk_out <= (count == 2'b01); // 当计数器1时,输出高电平 end endmodule ``` 在设计了基本的计数器分频器后,你可以使用QuartusⅡ等软件进行仿真,验证功能正确性。之后,将设计下载到FPGA板上进行硬件测试,观察是否满足预期的功能。 本回答通过提供代码示例和设计步骤,详细解释了如何在Verilog中实现二进制计数器和二分频器。如果你希望进一步深入学习时序逻辑电路的构建和Verilog编程,强烈建议你查阅《Verilog实现60进制计数器时序逻辑分频》一书。该书籍详细介绍了从理论到实践的完整过程,不仅包括了计数器分频器设计,还涉及了集成触发器的应用以及仿真和硬件测试的方法,是学习数字系统设计的宝贵资源。 参考资源链接:[Verilog实现60进制计数器时序逻辑分频](https://wenku.youkuaiyun.com/doc/36f51r94kr?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值