- ——设备:PC机 QuartusII软件开发平台(9.1sp2版本)
- ——存在problem:RTL电路不太会绘制…TAT
计数器仿真实验 1 内容
- 使用Veriog - HDL 语言按照如下要求设计一个计数器电路并进行仿真测试
信号定义
信号名称 |
方向 |
位宽 |
说明 |
clk
输入
1
输入时钟信号
RST
输入
1
输入复位清零信号,异步高电平有效
CNT
输出
3
输出计数值信号
计数器特征
从0计数到5,然后又变成0,如此往复
0 1 2 … 5 |
0 1 2 … 5 |
0 1 2 … 5 |
同步时钟电路仿真实现过程
1. 分析题目要求及数据
计数器是时序电路中常用的原件之一,主要用来实现计数或者定时功能。根据题目要求,这里我们设计的是一个计数初值为0的同步6进制计数器,其中信号位宽即表示数据所用的比特数。根据EDA课程学到的内容,首先对计数器有一个大致的模型,如下图所示:
自行设计电路思路方法全部来自数字电路课程的知识
对时序电路部分的一些重点知识作截图整理如下
2. 模6计数器电路的状态转移图以及电路设计过程:
3. Quartus II软件实现电路设计:
波形仿真结果验证电路设计基本正确。
4. Verilog HDL代码如下:
module top(clk,
RST,
CNT);
input clk,RST;
output[2:0] CNT;
reg[2:0] CNT;
always@(posedge clk or posedge RST) begin
if(RST) begin
CNT<=0;
end
else begin
if(CNT<5)begin
CNT<=CNT+1;
end
else begin
CNT<=0;
end
end
end
endmodule
tips:
- 本实验使用MAX7000S系列的EPM7032SLC44-6芯片实现,引脚分配由编译系统自动分配。
- 由QuartusII 软件扫描生成RTL电路图并查看的步骤如下:
- 输入代码,选择Processing > start > Analysis & Elaboration
- Tools > Netlist viewer > RTL viewer
5. 查看RTL电路图
计数器仿真实验 2 内容
- 使用Veriog - HDL 语言按照如下要求设计一个计数器电路并进行仿真测试
信号定义
信号名称 |
方向 |
位宽 |
说明 |
clk
输入
1
输入时钟信号
RST
输入
1
输入复位清零信号,异步高电平有效
CNT
输出
4
输出计数值信号
计数器特征
设计一个计数器,该计数器在电路上电后会循环的从0值递增计数到最大值M,计数最大值M是一个循环变化的过程,计数器复位之后,第一次计数最大值M是6,然后是7、8、9,然后计数最大值M又变成6,如此往复循环,计数过程如下所示:
0 1 2 … 6 |
0 1 2 … 7 |
0 1 2 … 8 |
0 1 2…9 |
0 1 2…6 |
… |
分析题目要求分析电路完成代码实现仿真
1.计数器电路的状态转移图如下所示:
对题目一代码稍作改动进行仿真验证:
2.Verilog HDL代码:
module count3(RST, CLK, CNT);
input RST;
复位信号
input CLK;
output [3:0] CNT;
parameter MIN=6;
parameter MAX=9;
reg [3:0] CNT;
reg [3:0] CNT_max=MIN;
always @ (posedge CLK or posedge RST)begin
if(RST)begin
CNT <= 0;
CNT_max <= MIN;
end
else begin
if(CNT < CNT_max)begin
CNT <= CNT + 1'b1;
end
else if(CNT == CNT_max)begin
CNT <= 0;
if(CNT_max < MAX)
CNT_max <= CNT_max + 1'b1;
else
CNT_max <= MIN;
end
end
end
endmodule
####
3.仿真结果如下:
4.查看RTL电路图: