其实这篇应该是FPGA学习的第一篇,之前一篇使用的黑金的AX301开发板,但是因为种种原因,迟迟没写,这里使用VScode进行编程
VScode可以直接从腾讯电脑管家中下载我就不给链接了。
其他软件的安装与关联在此就不过多赘述了,VScode安装成功后,需要安装一些插件:
主要是来交待一下Modelsim的仿真过程,计数器的原理在此就不赘述了
Project_ex
ex就是example的意思
建这个空工程文件单纯是为了以后建工程直接复制粘贴,顺带讲一下每个文件夹的作用。
Doc:用来存放工程说明与电路设计文件
Ip_core:存放所调用的ip核文件(暂时先这样)
Quartus_prj:工程文件存在并说明开发所使用的为Quartus软件
Src:存放工程源文件
Sim:存放TB仿真文件
Verilog代码
这里使用异步复位,使用VScode打开Src文件夹并新建.v文件
module Counter_4Bits
(
input clk,
input rst_n,
output reg [3:0] cnt_data
);
always @(posedge clk or negedge rst_n) begin
if(!rst_n)
cnt_data<=0;
else if (cnt_data==4'b1111)
cnt_data<=0;
else
cnt_data<=cnt_data+1'b1;
end
endmodule
TB文件编写
使用VScode打开Sim文件夹并新建TB_Counter_4Bits.v文件
`timescale 1ns/1ns
module TB_Counter_4Bits ();
reg clk;
reg rst_n;
wire [3:0] cnt_data;
initial begin
clk<=1'b1;
rst_n<=1'b0;
#20
rst_n<=1'b1;
end
always #10 clk=!clk;
Counter_4Bits _inst
(
.clk(clk),
.rst_n(rst_n),
.cnt_data(cnt_data)
);
endmodule
后文结合Modelsim仿真分析TB文件代码
新建Modelsim仿真工程
打开Modelsim软件,左上角File->New->Project,在弹出来的窗口中,更改Project Name为TB_Counter_4Bits并将Project Location更改到Sim文件夹下,然后点击OK
在该界面的空白处右击Add to Project->Exiting File…将Sim文件夹下的TB文件与Src文件夹下的.v文件添加到工程下,如图:
在菜单栏中找到Compile->Compile All点击编译通过在菜单栏找到Simulate->Start Simulate点击出现:
点机work旁的+号选择TB文件:
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
然后点击OK
出现:
在Objects也就是上图右上角区域内“CTRL+A”后“CRTL+W”出现wave
在wave中点击+和x中间那个,这样wave就能单独一个窗口
在wave窗口左侧“CTRL+A”后“CTRL+G”将信号分组并点击左下角
在菜单栏中找到并输入仿真时间,这里我设置成1000ns,点击仿真时间框旁边第一个Run或者按F9
分析:
1)前20nsrst_n信号为低电平对应TB文件中的这一段
initial begin
clk<=1'b1;
rst_n<=1'b0;
#20
rst_n<=1'b1;
end
2)clk信号每过10ns翻转一次,对应TB文件中的这一段
always #10 clk=!clk;
3)之所以这样写是因为20ns对应50MHz,用verilog代码模拟一个50MHz的晶振
4)当cnt_data来到4’b1111这个状态时,clk的上升沿到来,cnt_data就变成4‘b0000状态,例化中有这样一句话.cnt_data(cnt_data),前面的cnt_data来自于Counter_4Bits.v这个module里,后面括号中的cnt_data来自TB文件中wire [3:0] cnt_data;这句话。也就是说将TB文件中的这个变量与源文件中的cnt_data这个变量连接起来。例化中的其他语句也是同理.
5)这个其实不算分析,主要是想说一下代码书写过程中位宽类型这样的声明都要写,变量对其这样写出来的代码更规范,然后就是关键的地方写注释文章来源:https://www.toymoban.com/news/detail-400120.html
总结
其实这应该是FPGA学习系列的第一篇文章,至于语言本身的学习其实把一些简单的组合逻辑电路和时序逻辑电路写一下就差不多学会了。暑假摆烂不能再摆下去了……文章来源地址https://www.toymoban.com/news/detail-400120.html
到了这里,关于【关于Modelsim仿真】4位计数器的设计与仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!