- ——设备: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代码如下:
////////// 模6 计数器 ////////////////
module top(clk,//input 1,同步时钟信号
RST,//input 2,复位信号
CNT);//output,输出计数信号
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; //计数最小模值为6
parameter MAX=9; //计数最大模值为9
reg [3:0] CNT;
reg [3:0] CNT_max=MIN;//reg变量初始化为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;
//计数累加1
end
else if(CNT == CNT_max)begin
CNT <= 0;
//归零重新开始计数
if(CNT_max < MAX)
CNT_max <= CNT_max + 1'b1;
//计数模值加1
else
CNT_max <= MIN;
end
end
end
endmodule
####3.仿真结果如下: