【关于Modelsim仿真】4位计数器的设计与仿真

这篇具有很好参考价值的文章主要介绍了【关于Modelsim仿真】4位计数器的设计与仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

其实这篇应该是FPGA学习的第一篇,之前一篇使用的黑金的AX301开发板,但是因为种种原因,迟迟没写,这里使用VScode进行编程
VScode可以直接从腾讯电脑管家中下载我就不给链接了。
其他软件的安装与关联在此就不过多赘述了,VScode安装成功后,需要安装一些插件:【关于Modelsim仿真】4位计数器的设计与仿真
【关于Modelsim仿真】4位计数器的设计与仿真
【关于Modelsim仿真】4位计数器的设计与仿真

主要是来交待一下Modelsim的仿真过程,计数器的原理在此就不赘述了

Project_ex

ex就是example的意思
【关于Modelsim仿真】4位计数器的设计与仿真
建这个空工程文件单纯是为了以后建工程直接复制粘贴,顺带讲一下每个文件夹的作用。
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【关于Modelsim仿真】4位计数器的设计与仿真
在该界面的空白处右击Add to Project->Exiting File…将Sim文件夹下的TB文件与Src文件夹下的.v文件添加到工程下,如图:
【关于Modelsim仿真】4位计数器的设计与仿真
在菜单栏中找到Compile->Compile All点击编译通过在菜单栏找到Simulate->Start Simulate点击出现:
【关于Modelsim仿真】4位计数器的设计与仿真
点机work旁的+号选择TB文件:
【关于Modelsim仿真】4位计数器的设计与仿真
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
千万不要勾选Enable optimization!
然后点击OK
出现:
【关于Modelsim仿真】4位计数器的设计与仿真
在Objects也就是上图右上角区域内“CTRL+A”后“CRTL+W”出现wave
【关于Modelsim仿真】4位计数器的设计与仿真
在wave中点击+和x中间那个,这样wave就能单独一个窗口【关于Modelsim仿真】4位计数器的设计与仿真
在wave窗口左侧“CTRL+A”后“CTRL+G”将信号分组并点击左下角
【关于Modelsim仿真】4位计数器的设计与仿真
在菜单栏中找到并输入仿真时间,这里我设置成1000ns,点击仿真时间框旁边第一个Run或者按F9
【关于Modelsim仿真】4位计数器的设计与仿真
【关于Modelsim仿真】4位计数器的设计与仿真
分析:
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)这个其实不算分析,主要是想说一下代码书写过程中位宽类型这样的声明都要写,变量对其这样写出来的代码更规范,然后就是关键的地方写注释

总结

其实这应该是FPGA学习系列的第一篇文章,至于语言本身的学习其实把一些简单的组合逻辑电路和时序逻辑电路写一下就差不多学会了。暑假摆烂不能再摆下去了……文章来源地址https://www.toymoban.com/news/detail-400120.html

到了这里,关于【关于Modelsim仿真】4位计数器的设计与仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 同步计数器设计与建模

    ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AISha

    2024年02月01日
    浏览(42)
  • 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器与分频器   ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用

    2024年02月02日
    浏览(58)
  • 用74LS73设计四位二进制加法计数器和8421BCD加法计数器

     (1)用2片74LS73实现该电路,由CP端输入单脉冲,设计并画出4位异步二进制加法计数器电路图。  (2)由CP端输入单脉冲,测试并记录Q1~Q4端状态及波形。 四位二进制加法计数器状态迁移表如下: Q 4n Q 3n Q 2n Q 1n Q 4n+1 Q 3n+1 Q 2n+1 Q 1n+1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0

    2024年02月10日
    浏览(87)
  • 脉冲计数器 单片机课程设计

    利用单片机对单片机实验箱的按键S29发出的负脉冲个数进行加/减计数,计数结果(0~255)在8个LED数码管中的3位进行显示(使用8255进行动态驱动)。 利用拨动开关S26来选择计数的方式。S26接高电平时,进行加法计数。S26接低电平时,进行减法计数;利用拨动开关S27控制计数

    2024年02月04日
    浏览(44)
  • 数字电路13-任意进制计数器设计

    因为市面上的进制计数器的种类优先,所以需要特定进制时,只能自己在已有产品的基础上构成需要的特定进制。 十进制计数器也是通过4位二进制计数器,去掉多余状态所得 根据十进制计数器,可得M进制计数器的特点,即状态数、脉冲数、末状态 如前面的十进制计数器,

    2024年02月07日
    浏览(55)
  • 任意进制加法计数器电路设计

    目录 一、题目 二、时钟发生电路 1、施密特触发电路 2、单稳态电路 3、多谐振荡电路 三、 N进制计数器 1、M的情形 2、MN的情形 2、1  193实现 2、2 192实现 四、设计的小bug 1、两个bug 2、bug的原因及解决 五、仿真源文件的获取 图一 题目要求         如题,我们要设计三部

    2024年02月09日
    浏览(47)
  • FPGA设计编程(三) 时序逻辑电路-计数器设计

    目录   【实验要求】  【实验软件工具】 【实验一】设计一个8位异步二进制计数器模块 1. 实验内容与原理说明 2. 实验模块程序代码和激励代码 (1)设计模块代码 (2)激励模块代码 3. 波形仿真图 4.门级电路图 【实验二】设计一个8位同步二进制计数器模块 1. 实验内容与原理说

    2024年02月02日
    浏览(140)
  • FPGA实验二:模可变计数器设计

    目录 一、实验目的 二、实验要求 三、实验代码 1.实验源码

    2024年02月12日
    浏览(47)
  • 通过verilog实现模可变计数器的设计

    实验要求:          (一) 实验目的 (1)掌握组合逻辑电路和时序电路的 FPGA实现方法; (2)熟悉EDA开发板和开发软件的使用方法; (3)学习静态数码管的使用和7段数码显示译码器设计; (4)掌握时钟在时序电路中的作用; (5)掌握分频电路的实现方法。 (二)

    2024年02月05日
    浏览(41)
  • 使用74LS161设计任意进制计数器

    可预置的四位二进制同步计数器74LS161具有并行预置数据、清零、置数、计数和保持功能,并且有进位输出端,可以串接计数器使用。引脚排列如图7-1所示,功能表见7-2所示。 图7-1 74LS161引脚排列 从下表7-2中可知,该计数器具有信号清零端 ,信号使能端CEP、CET,信号置数端

    2024年02月02日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包