hnu 数字电路 实验2.2 n-1多路复用器

本文档详细描述了使用VHDL语言设计一个通用n-1多路复用器的过程,并将其应用于构建一个8-1多路复用器。通过QuartusII进行编译和调试,最终实现了功能仿真,验证了复用器在不同选择输入下正确选择相应输入信号的功能。时序仿真展示了从不同输入到输出的延迟时间,证明了设计的正确性和效率。
摘要由CSDN通过智能技术生成

2.用VHDL语言设计一个n-1多路复用器,调用该多路复用器定制为8-1多路复用器。
① 理解题意,分析题目要求我们先设计一个n-1的多路复用器,再调用这个多路复用器,构造一个8-1多路复用器。
② 打开Quartus II,新建工程,工程命名为dlfuy_8_1,开始编写源代码。
③ 写好源代码,保存文件。(如图为源代码,包括n-1多路复用器的实现和调用)

LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

package quzheng is
  function weishu(n:integer) return integer;
end quzheng;

package body quzheng is
  function weishu(n:integer) return integer is
    variable answer:integer:=0;
    variable myrecord:integer:=1;
    begin
      while(myrecord < n) loop
        myrecord:=myrecord * 2;
        answer:=answer+1;
      end loop;
      return answer;
   end weishu;
end quzheng;

LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
use work.quzheng.all;

entity fyq_n_1 is
  generic(n:integer);
  port(x:in std_logic_vector(n-1 downto 0);
       s:in std_logic_vector(weishu(n)-1 downto 0);
       y:out std_logic);
end fyq_n_1;

architecture shixian of fyq_n_1 is
  begin
    y <= x(conv_integer(s));
end shixian;


LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use work.quzheng.all;

entity dlfyq_8_1 is
  port (x:in std_logic_vector(7 downto 0);
        s:in std_logic_vector(2 downto 0);
        y:out std_logic);
end dlfyq_8_1;

architecture shixian of dlfyq_8_1 is
  component fyq_n_1 
       generic(n:integer);
       port(x:in std_logic_vector(n-1 downto 0);
       s:in std_logic_vector(weishu(n)-1 downto 0);
       y:out std_logic);
  end component;
  begin 
      gongju:fyq_n_1 generic map(8) port map(x,s,y);
end shixian;

在这里插入图片描述
④ 编译与调试。确保顶层实现的命名和工程名一致。编译成功。
在这里插入图片描述
⑤ 查看RTL视图。
在这里插入图片描述
在这里插入图片描述
⑥ 结果分析及结论。
如RTL图所示,最外层实现为调用fyq_n_1,内层为一个八选一的多路复用器。

⑦ 功能仿真的波形及验证。
a.新建波形文件。将选择输入s2-s0输入,并指定被选择的x7-x0。
b.生成网表,功能仿真。生成网表成功。
在这里插入图片描述
功能仿真成功。功能仿真波形图如图所示:
在这里插入图片描述
c.结果分析及结论
0-10.0ns,s=000,8-1多路复用器选择x0,输出y=x0=1,仿真无误。
30.0-40.0ns,s=001,8-1多路复用器选择x1,输出y=x1=1,仿真无误。
60.0-70.0ns,s=010,8-1多路复用器选择x2,输出y=x2=1,仿真无误。
90.0-100.0ns,s=011,8-1多路复用器选择x3,输出y=x3=1,仿真无误。
120.0-130.0ns,s=100,8-1多路复用器选择x4,输出y=x4=1,仿真无误。
150.0-160.0ns,s=101,8-1多路复用器选择x5,输出y=x5=1,仿真无误。
180.0-190.0ns,s=110,8-1多路复用器选择x6,输出y=x6=1,仿真无误。
210.0-220.0ns,s=111,8-1多路复用器选择x7,输出y=x7=1,仿真无误。
⑧ 实现时序仿真。
a.时序仿真成功。
在这里插入图片描述
b.时序仿真波形图如下:
在这里插入图片描述
c.结果分析及结论
在这里插入图片描述
d.编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
在这里插入图片描述
从x6到y耗时最长,为8.805ns,从x1到y耗时最短,为7.491ns,可结果由耗时最长的那个决定,故整体耗时为8.805ns。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值