八选一数据选择器

八选一数据选择器_第1张图片

目的

1. 进一步掌握VHDL语言的基本结构及设计的输入方法。

2. 掌握8选1数据选择器的设计思路;


内容

1. 用拨码开关SW7~SW0作为数据输入端D7~D0的输入,SW10~SW8作为数据选择端C、B、A的输入,SW11作为选通端STROBE的输入, LEDR0作为数据输出端Y的输出, LEDR1作为反码数据输出端W的输出。

2. 观察Y与数据输入端D7~D0的关系,验证八选一数据选择器设计的正确性。


原理

CT74151为互补输出的8选1数据选择器,其引脚排列图如图2-28所示。数据选择端(ABC)按二进制译码,从8 个数据(D0---D7)中选取1 个所需的数据。只有在选通端STROBE 为低电平时才可选择数据。151 有互补输出端(Y、W),Y 输出原码,W 输出反码。

八选一数据选择器_第2张图片

图2-28   CT74151管教图

八选一数据选择器_第3张图片

表2-3 CT74151功能表



操作

1.创建一个Quartus II 工程,用来在DE2-115上实现预期电路。

2.写出预期电路的VHDL代码。

3.将VHDL文件包含进工程并编译。

4.仿真电路来检测其功能。

5.分配引脚。

6.重新编译并将其下载进FPGA芯片中。

通过DE2-115开发板来证实电路是否准确。


程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CT74151 IS

 PORT(A,B,C,D0,D1,D2,D3,D4,D5,D6,D7,STROBE: IN STD_LOGIC;

          Y,WN: OUT STD_LOGIC);

END CT74151;

ARCHITECTURE behave OF CT74151 IS

   SIGNAL sel: STD_LOGIC_VECTOR (2 DOWNTO 0);

  BEGIN

   sel<=C&B&A;

   PROCESS (sel,STROBE)

  VARIABLE Y_TEMP:STD_LOGIC;

   BEGIN

     IF STROBE=’0’ THEN

CASE sel IS

       WHEN "000" => Y_TEMP :=D0;

       WHEN "001" => Y_TEMP :=D1;

       WHEN "010" => Y_TEMP :=D2;

       WHEN "011" => Y_TEMP :=D3;

       WHEN "100" => Y_TEMP :=D4;

       WHEN "101" => Y_TEMP :=D5;

       WHEN "110" => Y_TEMP :=D6;

       WHEN "111" => Y_TEMP :=D7;

       WHEN OTHERS=> Y_TEMP :='X'; 

   END CASE;

END IF;

Y<=Y_TEMP;

WN<=NOT Y_TEMP;

  END PROCESS;

END behave;


问题及解决

文件名必须与VHDL文件中的设计实体名保持一致。

总结:这次课程设计虽然在功能上完全实现了课题的要求,即实现了八选一数据选择器的全部要求,但是相应的不足之处还应该考虑到。怎样更好地布局以及连线,使整个电路图不至于杂乱无章等等问题,虽然是细节问题,但往往可以决定成败,这些问题都应该引以为戒并作为以后设计相关电路时的参考。 












你可能感兴趣的:(八选一数据选择器,VHDL语言,EDA,FPGA芯片,Quartus,II)