hnu 数字电路 实验2.1 8重3-1多路复用器

一、实验目的
1.熟悉多路复用器、加法器的工作原理。
2.学会使用 VHDL 语言设计多路复用器、加法器。
3.掌握 generic 的使用,设计 n-1 多路复用器。
4.兼顾速度与成本,设计行波加法器和先行进位加法器。

二、实验内容
1.用 VHDL 语言设计 8 重 3-1 多路复用器;
2.用 VHDL 语言设计 n-1 多路复用器,调用该 n-1 多路复用器定制为 8-1
多路复用器。
3.用 VHDL 语言设计 4 位行波进位加法器。
4.用 VHDL 语言设计 4 位先行进位加法器。

三、实验方法
使用Quartus II软件完成VHDL程序。

四、实验步骤和实验过程
1.用VHDL语言设计8重3-1多路复用器
① 理解题意,题目要求完成一个三选一的多路复用器,输入为一个两位数据(涵盖三种选择情况),选出一个八位的数据。
② 打开Quartus II,新建工程,编写源代码。
a.新建工程。【Create A New Project】->【Next】->设置文件路径为全英路径+设置project name为fuyongqi_8_3_1 ->【Next】->【Next】->Family 框处选择【Cyclone】->【Next】->【Next】->【Finish】。工程创建完毕。
b.新建编程文件。【File】->【New】->【VHDL File】,编程文件创建完毕。
③ 写好源代码,保存文件。(如图为源代码,VHDL实现)

LIBRARY IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity fuyongqi_8_3_1 is
  port (x,y,z:in std_logic_vector(7 downto 0);
        s:in std_logic_vector(1 downto 0);
        d:out std_logic_vector(7 downto 0));
end fuyongqi_8_3_1;

architecture shixian of fuyongqi_8_3_1 is
  begin
    d <= x  when s="00"  else
         y  when s="01"  else
         z  when s="10"  else
         "XXXXXXXX";
end shixian;

在这里插入图片描述
④ 编译与调试。确保顶层实现的命名和工程名一致。点击【processing】-【star compilation】或者在这里插入图片描述
,进行文件编译,编译成功。
在这里插入图片描述
⑤ 查看RTL视图。【Tools】->【Netlist Viewer】->【RTL Viewer】
在这里插入图片描述
⑥ 结果分析及结论。如RTL图所示:
a.当输入为00时,第一个复用器DATAB打开,允许y信号输入;第二个复用器DATAB打开,允许z信号输入,同时拒绝了第一个复用器传递的y,最终输出x数据。
b.当输入为01时,第一个复用器DATAB打开,允许y信号输入;第二个复用器DATAA打开,允许第一个复用器传递的y通过,最终输出y数据。
c.当输入为10时,第一个复用器DATAA打开,允许z信号输入;第二个复用器DATAA打开,允许第一个复用器传递的z通过,最终输出z数据。

⑦ 功能仿真的波形及验证。新建一个vector waveform file,按照程序所述插入所有输入输出节点。
a.新建波形文件。【File】->【New】->【Vector Waveform File】->【OK】->双击->【Node Finder】->pins=all;【list】->【>>】->【OK】->【OK】->设置X、Y的波形图->保存文件
b.生成网表,功能仿真。【Processing】->【Simulation Tool】->【Simulation mode】框选择【Functional】->【Generate Functional Simulation Netlist】。生成网表成功。
在这里插入图片描述
网表生成后才可以功能仿真。【Processing】->【Start Simulation】
在这里插入图片描述
功能仿真波形如下图:
在这里插入图片描述
c.结果分析及结论
0-10.0ns,s=00,输出d=x=1,仿真无误。
40.0-50.0ns,s=01,输出d=y=2,,仿真无误。
80.0-90.0ns,s=10,输出d=z=3,仿真无误。
其余时间无输入,对应也就没有输出。

⑧ 实现时序仿真。【Processing】->【Simulation Tool】->【Simulation mode】框选择【Timing】->【Start】。
a.时序仿真成功。
在这里插入图片描述
时序仿真波形图如图所示:
在这里插入图片描述
b.结果分析及结论
0-10.0ns,s=00,输出d=x=1(00000001),仿真无误。
10.0-20.53ns,无输入,因为存在延时,输出d=x=1(00000001)。
40.0-48.45ns,s=01,输出应为d=y=2(00000010),因为存在延时,无输出。
48.45-50.0ns,s=01,输出d=y=2(00000010),,仿真无误。
50.0-59.56ns,无输入,因为存在延时,输出d=y=2(00000010)。
80.0-88.08ns,s=10,输出应为d=z=3(00000011),因为存在延时,无输出。
88.08-90.0ns,s=10,输出d=z=3(00000011),仿真无误。
90.0-97.74ns,无输入,因为存在延时,输出d=z=3(00000011)。
c.编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
在这里插入图片描述
从S0到d0耗时最长,为10.407ns,从x1到d1耗时最短,为7.243ns,可结果由耗时最长的那个决定,故整体耗时为10.407ns。

(注:因后续三个VHDL语言设计的实现和第一个设计操作相近,故后续两个实现操作步骤略去)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值