【FPGA实训第一周】---Quartus入门


环境:

quartus 18.1 lite版

modelsim altera 18.1 lite版

1.D触发器基本原理

D触发器是CMOS数字集成电路单元中时序逻辑电路中的重要组成部分之一,学习D触发器具有十分重要的意义,可以帮助了解数字集成电路的单元。

D触发器属于时钟控制触发器,一般而言,时钟控制的触发器可以分成三大类:

第一类时钟控制触发器要求时钟信号的脉冲宽度小于触发器的传输延迟,即时钟信号先为高,接着必须在触发器的输出状态改变之前变为低。

第二类时钟控制触发器的特点是,时钟信号为高电平时触发器改变输出状态,通常称这种触发器为电平敏感触发器(锁存器Latch)。

第三类触发器的特点是边沿触发,时钟信号的上升/下降沿会使触发器改变输出状态(寄存器Register)。

D触发器(data flip-flop)也称为维持-阻塞边沿D触发器,由六个与非门组成,其电路图及其逻辑符号如下图所示。其中G1和G2构成基本的RS触发器,G3和G4构成时钟控制电路,G5和G6组成数据输入电路。由于 分别为复位端和置位端,在分析D触发器工作原理时均视为高电平,以保证不影响电路工作。
在这里插入图片描述

方程

Q(n+1)=D

功能表

在这里插入图片描述

2.用控件创建D触发器并仿真

2.1新建项目

File->New Project Wizard:

在这里插入图片描述

点击Next

在这里插入图片描述

设置工程的存储位置和项目名称

在这里插入图片描述

点击Next
在这里插入图片描述
在这里插入图片描述

选择目标芯片:cycloneIVE系列的EP4CE115F29C7

在这里插入图片描述

点击Next
在这里插入图片描述

点击finish

在这里插入图片描述

2.2创建D触发器原理图

首先打开QuartusII,选菜单“File”一“New”,在弹出的“New-”对话框中选择“ Design Files” 的原理图文件编辑输入项“Block block diagram/schematic File"按"OK"后将打开原理图编辑窗。

通过编辑工具,利用4 个 nand2 与非门,1 个 not 非门,2个输入管脚和2个输出管脚,并连线,最终如下图:

在这里插入图片描述

先进行全局编译,看是否出错
在这里插入图片描述

将做的图,生成硬件电路图,更方便查看

在这里插入图片描述

生成的硬件电路图如下,符合D触发器特性
在这里插入图片描述

2.3编译仿真

新建波形文件。如上面新建图形文件的方法,从“file”中选择“new”,然后从出现的对话框中选择“university program VWF”。
点击“OK”。
在这里插入图片描述

输入波形文件。在波形文件编辑器左端大片空白处双击,出现“insert node or bus”对话框,点击“node finder”按钮。然后在随后出现的“node finder”对话框中点击“list”按钮,则半加器中所有的输入输出引脚全部出现在对话框左边。再在该界面上点击“>>”,则把左边所有的端口都选择到右边,进入波形,如图。

在这里插入图片描述

编辑输入CLK,产生时钟信号
在这里插入图片描述

把输入D随便设置几个低电平和高电平

在这里插入图片描述

点击功能仿真编译按钮:

仿真结果如下,画圈处和时钟周期做对比确实延迟了半个周期

在这里插入图片描述

点击时序仿真按钮:

时序结果如下,画圈处和时钟周期做对比确实延迟了一个周期

时序仿真图:
在这里插入图片描述

3.直接调用D触发器并仿真

3.1新建项目

步骤和2.1同

3.2创建D触发器原理图

此处是直接调用D触发器
在这里插入图片描述

再添加输入和输出管脚。最终原理图如下:
在这里插入图片描述

编译没有出错,然后生成查看硬件电路图

在这里插入图片描述

3.3编译仿真

具体步骤与2.3仿真步骤相同

结果如下,画圈处和时钟周期做对比确实延迟了半个周期
功能仿真波形图:
在这里插入图片描述

结果如下,画圈处和时钟周期做对比确实延迟了一个周期
时序仿真波形图:

在这里插入图片描述

4.用verilog语言编写D触发器并仿真

4.1用verilog语言创建D触发器原理图

4.1.1配置vscode

下载vscode并且装上相应的插件,特别是Verilog-HDL/SystemVerilog/Bluespec SystemVerilog此插件非常重要,然后继续将vscode配置modelsim进行语法检错,语法检错参考博客https://blog.csdn.net/weixin_43828944?type=blog
最后设置自动保存。(既然用了vscode就可以继续去发现更多好用的插件来帮助自己写verilog代码,目的也在于此)

4.1.2代码编写

配置好后,继续新建文件夹,下图是一个文件路径参考,即先建一个code文件,然后此次项目的触发器文件D,D文件下继续新建三个文件,prj用来保存项目,,rtl保存实现功能的代码文件,tb保存仿真代码文件
在这里插入图片描述

在rtl,和tb文件下新建空的.v文档,用vscode打开,开始编写代码

在这里插入图片描述
在这里插入图片描述

dwave.v代码如下

在这里插入图片描述

//dwave是文件名
module dwave(D,CLK,Q);
    input D;
    input CLK;
    output Q;

    reg Q;

    always @ (posedge CLK)//我们用正的时钟沿做它的敏感信号
    begin
        Q <= D;//上升沿有效的时候,把d捕获到q
    end
endmodule


dwave_tb.v代码如下

在这里插入图片描述


//测试代码
`timescale 1ns / 1ns

module dwave_tb;
    reg CLK,D;
    wire Q;

    dwave u1(.D(D),.CLK(CLK),.Q(Q));

    initial
    begin
        CLK = 1;
        D <= 0;
        forever
        begin
            #60 D <= 1;//人为生成毛刺 
            #22 D <= 0;
            #2  D <= 1;
            #2  D <= 0;
            #16 D <= 0;//维持16ns的低电平,然后让它做周期性的循环
        end
    end

    always #20 CLK <= ~CLK;//半周期为20ns,全周期为40ns的一个信号
endmodule

4.1.3新建项目

项目保存到prj文件下,其余与2.1相同步骤
在这里插入图片描述

建好文件后,双击下图第二步,进入添加页面

在这里插入图片描述

点击三个点处,添加写得两个.v代码文件
在这里插入图片描述

添加好后,点击Tools->Options->EDA Tool Options,在下图处导入如下路径

在这里插入图片描述

完成后,准备配置Test Benches,点击Assignmens->Settings,随后依次按下图打开选项框,第四步是找到仿真文件,并且点击open
在这里插入图片描述

最后按下图二三步配置名字,名字即是导入的文件名,最后点击add,然后依次点击ok,完成其余的选项框
在这里插入图片描述

4.2编译仿真

点击全编译,没有报错
在这里插入图片描述

查看硬件原理图,也没问题

在这里插入图片描述

打开仿真
在这里插入图片描述

找到sim窗口,添加u1
在这里插入图片描述

找到wave窗口,依次点击->Restar->Run all->zoom full->Zoom In On Active Cursor,得到如下仿真波形,具体的实际操作页面可能和本人的不一样,因为在仿真界面本人还进行了黑波白底设置,工具栏调整
在这里插入图片描述

5.总结

首次接触fpga,对于这门语言的编写掌握是不足的,但是学起来感觉和c差距不大,较容易上手,然后本次作业的难点在于编译仿真部分,可能会报出各种各样的错误,但是一般网上都有解决方案,其次就是完成写verilog代码并且编译仿真这个步骤,做这个步骤时一定要掌握特定的流程,比如怎么新建文件,用什么软件写代码(vscode书写确实可以装很多插件,很方便),如何导入等,掌握后,一直按照标准流程来,省时省力也不容易出错

6.参考

​ https://blog.csdn.net/weixin_46129506/article/details/123443865

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值