八选一数据选择器
2015-10-19 21:56
513 查看
目的
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-28 CT74151管教图
表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文件中的设计实体名保持一致。
总结:这次课程设计虽然在功能上完全实现了课题的要求,即实现了八选一数据选择器的全部要求,但是相应的不足之处还应该考虑到。怎样更好地布局以及连线,使整个电路图不至于杂乱无章等等问题,虽然是细节问题,但往往可以决定成败,这些问题都应该引以为戒并作为以后设计相关电路时的参考。
相关文章推荐
- iOS:UIMapView地图视图控件的简单使用
- Android 布局优化
- Integer Long大小比较
- nyoj 236 心急的C小加
- 阿里云 Contos 6.5 + nginx + uwsgi + django环境部署
- 利用树的先序和后序遍历打印 os 中的目录树
- 执行go get出现 go: GOPATH entry is relative错误
- KVO
- 日常总结(五)同时启动myeclipse和eclipse如何解决端口被占用
- 1019. General Palindromic Number
- Android五大布局之相对布局
- 各种标签
- Android数据存储(2):Internal Storage
- 201510192043_《Javascript权威指南(第六版)——ES5中的类、保存对象状态》(P239-243)
- HIVE入门_1
- linux下导入、导出mysql数据库文件的命令
- 阶乘计算升级版
- OpenGL编程学习实战教程
- 杭电(1269)迷宫城堡(强联通之定义算法)
- Android 5.0(Lollipop)事件输入系统(Input System)