数字电路与逻辑设计实验一 译码器的实现

代码仅供参考:
链接:pan.baidu.com/s/1VekND1K50yclOKdkSI-otw
up1k

一、 实验目的

熟悉QuartusII仿真软件的基本操作,并用VHDL/Verilog语言设计一个异或门、3-8译码器以及模拟机指令译码器。

二、 实验内容

1、 熟悉QuartusII软件的基本操作,了解各种设计输入方法(原理图设计、文本设计、波形设计)
2. 用逻辑图和VHDL语言设计一个异或门。
3. 用逻辑图和VHDL语言设计一个3-8译码器。
4. 用VHDL语言设计模型机指令译码器。

三、 实验方法

1、 实验方法

采用1基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是Quartus II。

2、 实验步骤

A. 异或门的VHDL语言与原理图设计

  • 1、 新建,编写VHDL源代码与原理图。
  • 2、
    • (1) 选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置 文件路径+设置project name为xor2)-【finish】
    • (2) 新建:【file】-【new】(AHDL File)-【OK】
    • (3) 新建:【file】-【new】(Block Diagram/Schematic File)-【OK】
  • 3、 写好源代码与原理图,保存文件(xor2.vhd、yihuo2.bdf)
  • 4、 编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译,编译成功。
  • 5、 波形仿真及验证。新建一个vector waveform file。按照程序所述插入a,b,c三个节点(a、b为输入节点,c为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,b的输入波形…点击保存按钮保存。(操作为:点击name(如:A))-右击-【value】-【clock】(如设置period=200;offset=0),同理设置name B(如120,,60),保存)。然后【start simulation】,出name C的输出图。
  • 6、 功能仿真。
  • 7、 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】

B. 3-8译码器的VHDL语言与原理图实现

  • 1、 新建,编写VHDL源代码与原理图。
  • 2、
    • (1) 选择保存项和芯片类型:【File】-【new project wizard】-【next】(设 置 文件路径+设置project name为decoder3_8)-【finish】
    • (2) 新建:【file】-【new】(AHDL File)-【OK】
    • (3) 新建:【file】-【new】(Block Diagram/Schematic File)-【OK】
  • 3、 写好源代码与原理图,保存文件(decoder3_8.vhd、decoder3_8.bdf)
  • 4、 编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译,编译成功。
  • 5、波形仿真及验证(操作同上)。
  • 6、功能仿真。
  • 7、查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】

C. 模拟机指令集译码器的VHDL语言设计

  • 1、 新建,编写VHDL源代码。
  • 2、
    • (1) 选择保存项和芯片类型:【File】-【new project wizard】-【next】(设 置文件路径+设置project name为ID)-【finish】
    • (2) 新建:【file】-【new】(AHDL File)-【OK】
  • 3、 写好源代码,保存文件(ID.vhd)
  • 4、 编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译,编译成功。
  • 5、 波形仿真及验证(操作同上)。
  • 6、 功能仿真。
  • 7、 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】

四、实验过程

A. 异或门的VHDL语言与原理图设计

1、 编译过程

a) 源代码如图(VHDL设计+原理图设计)
在这里插入图片描述
b) 编译、调试过程(VHDL+原理图)
在这里插入图片描述
①VHDL
资源消耗:
在这里插入图片描述
在这里插入图片描述
无编译错误
②原理图
在这里插入图片描述
在这里插入图片描述
开始时,原理图文件的名字设置了xor2与work中的xor2同名,改名后成功通过编译。

c) RTL视图
①VHDL
在这里插入图片描述
②原理图
在这里插入图片描述
d) 结果分析及结论
文件的名称不能与原有的冲突,否则会编译不过。

2、 波形仿真

a) 波形仿真过程(详见实验步骤)
b) 波形仿真波形图
①VHDL
在这里插入图片描述
②原理图
在这里插入图片描述
c) 结果分析及结论
0-2.5ns:异或门,0&1=1,正确
2.5-5.0ns:A&B=0&0=0,正确
5.0-7.5ns:A&B=1&0=0,正确
7.5-10ns:A&B=1&1=0,正确

3、 时序仿真

a) 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b) 时序仿真图
①VHDL
在这里插入图片描述
c) 结果分析及结论
b引脚到c引脚的实际p2p时间为7.103ns,二a引脚到c引脚的实际p2p时间为6.835ns。由于结果是由时间长的那个决定,故整体为7.103ns。

B. 3-8译码器的VHDL语言与原理图设计

1、 编译过程

a)源代码如图(VHDL设计+原理图设计)
①VHDL设计
在这里插入图片描述
②原理图
在这里插入图片描述
b)编译、调试过程(VHDL+原理图)
VHDL
在这里插入图片描述
出现错误,代码中when的用法写错,更正后通过编译,如下图:
在这里插入图片描述
c) RTL视图
①VHDL
在这里插入图片描述
②原理图
在这里插入图片描述
d)结果分析及结论
如同c++软件编程,语法的应用十分重要,可以简化代码。

2、 波形仿真

a) 波形仿真过程(详见实验步骤)
b) 波形仿真波形图
①VHDL
在这里插入图片描述
②原理图(offset与peroid设置与VHDL设置的相同,故仿真图几乎一样)
在这里插入图片描述
c) 结果分析及结论
由于两种文件period和offset设置相同,故功能仿真图都相同。
0-1ns:1&1&0时,y(6)=1,正确
1-2ns:1&1&1时

3、 时序仿真

a) 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b) 时序仿真图
①VHDL
在这里插入图片描述
②原理图
在这里插入图片描述
c) 结果分析及结论
①VHDL语言
A(0)引脚到Y(6)引脚的实际p2p时间为9.973ns,是时间最长的。由于结果是由时间长的那个决定,故整体为9.973ns。
②原理图
Pin_name4引脚到pin_name10引脚的实际p2p时间为9.713ns,是时间最长的。由于结果是由时间长的那个决定,故整体为9.713ns。

C. 指令集译码器的VHDL语言设计

1、 编译过程

a) 源代码如图(VHDL设计)
在这里插入图片描述
在这里插入图片描述
b) 编译、调试过程(VHDL)
在这里插入图片描述
无错误信息

c) RTL视图
在这里插入图片描述
d) 结果分析及结论
如同c++软件编程,语法的应用十分重要,可以简化代码,这里用到if语句,且<=赋值语句可以赋一个向量。

2、 波形仿真

a) 波形仿真过程(详见实验步骤)
b) 波形仿真波形图(全部变量同时改变过于复杂,挑选个别情况进行仿真)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
c) 结果分析及结论
①中当7-4为 1000时,无论3-0为何值,op(0)=1,其他为0,正确
②中当7-4为 0111时,无论3-0为何值,op(1)=1,其他为0,正确
③中当7-4为 0100时,无论3-0为何值,op(2)=1,其他为0,正确
④中当7-4为 0010时,无论3-0为何值,op(3)=1,其他为0,正确

3、 时序仿真

a) 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b) 时序仿真图(仅截取上部分)
在这里插入图片描述
在这里插入图片描述
c) 结果分析及结论
由于不是纯粹的组合逻辑电路,故没有tpd,仅出现tSU(时钟建立时间)、tH(时钟保持时间)、tCO(时钟到输出延时)

五、实验结论

刚接触到quartus的时候被这个全英文软件完全搞懵了,自己根本无法入门,后来在第二节讨论课上老师带着我们做了一遍之后才算是会用,勉强入门。之后接触到译码器和异或门,以及vhdl中各种精妙的语法后运用quartus更加的得心应手了。
这里有些心得:首先,VHDL中语法的应用十分关键,可以简化代码等。刚学这些语法时会有一些难度,但是真正学懂后就会觉得十分简单了。
另外,原理图的绘制比较复杂,要注意输入是否真的搭到了器件上、是否正确引出一条线等,还要注意线的布局,要尽量整洁美观大方。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值