Verilog 混合层次化文件设计——十进制可逆计数器

本文介绍了如何使用Verilog设计十进制可逆计数器,包括自加器和自减器的实现,以及如何通过控制输入信号切换加减功能。此外,还讲解了混合层次化文件设计的过程,从创建项目、选择芯片到使用原理图形式的顶层文件,以及如何添加元器件、自定义器件和进行接线操作。

首先解决十进制可逆计数器问题

所谓可逆计数器,就是说它不但要实现自加功能还要实现自减功能。分为两个部分去写(自加器和自减器),两部分都要控制在0-9以内,也就是二进制0000-1001之间,当然如果自加到9或者自减到0的时候要向co借位或进位,这样十进制可逆计数器的功能就可以完整实现了。

再通过控制输入x来实现自加与自减功能的切换
当x输入为高电平时为自加器
当x输入为低电平时为自减器
(代码附在最后)

再解决混合层次化文件设计

首先老规矩创建项目并选对芯片

这里的顶层文件选择创建的Block Diagram/Schematic Fille的格式也就是原理图的形式

PS:相较于文本顶层文件的形式,原理图的形式可以更加直观地看到自己的连线不容易出错。
在这里插入图片描述
看到的所创建的Block Diagram/Schematic Fille就是这样啦,在这里插入图片描述
双击空白区域,就可以看到元器件库,在Project中选择自己设计的元器件或者在软件自带器件库里选择合适的元器件。

在这里插入图片描述
比如这里要选择74248七段译码器,元器件库里有就可以直接搜索74248,找到后选择OK安放到合适位置。

使用 74190 十进制可逆计数器设计 85 进制加法计数器可以采用级联的方式,以下是具体的设计方法: ### 原理 74190 是十进制计数器,要构成 85 进制计数器,因为 \(85 = 8\times10 + 5\),所以需要两片 74190 进行级联,一片作为个位,另一片作为十位。 ### 设计步骤 1. **级联连接**:将两片 74190 进行级联,把低位片(个位)的进位输出端 \(RCO\) 连接到高位片(十位)的计数使能端 \(CTEN\)。这样当低位片计满 10 个数产生进位时,高位片才开始计数。 2. **反馈清零**:当计数器计到 85 时,需要产生一个清零信号将两片 74190 同时清零,重新开始计数。可以通过一个逻辑电路来实现反馈清零。当十位片的输出 \(Q_{3}Q_{2}Q_{1}Q_{0}\) 为 \(1000\)(即 8),个位片的输出 \(Q_{3}Q_{2}Q_{1}Q_{0}\) 为 \(0101\)(即 5)时,产生清零信号。可以使用与非门来实现这个逻辑。 3. **时钟信号**:将时钟信号 \(CLK\) 连接到低位片(个位)的时钟输入端 \(CLK\)。 ### 代码实现(Verilog 示例,用于仿真验证) ```verilog module counter_85( input wire clk, output reg [7:0] count ); reg [3:0] count_low; // 个位计数器 reg [3:0] count_high; // 十位计数器 always @(posedge clk) begin if (count == 8'd85) begin count_low <= 4'd0; count_high <= 4'd0; end else if (count_low == 4'd9) begin count_low <= 4'd0; if (count_high == 4'd7) begin count_high <= 4'd8; end else begin count_high <= count_high + 1; end end else begin count_low <= count_low + 1; end count <= {count_high, count_low}; end endmodule ``` ### 测试代码 ```verilog module tb_counter_85; reg clk; wire [7:0] count; counter_85 uut ( .clk(clk), .count(count) ); initial begin clk = 0; forever #5 clk = ~clk; // 10 个时间单位的时钟周期 end initial begin #200 $finish; // 仿真 200 个时间单位 end endmodule ``` ### 相关问题
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值