原创 实验二 四选一多路选择器的实现

2008-11-20 18:53 8102 10 12 分类: FPGA/CPLD

试验二、四选一多路选择器的实现


实验项目:四选一多路选择器的实现               06电信 陈振林


实验目的:1.学会熟练使用maxplus II编译工具。


          2.熟悉VHDL文本设计方法。


          3.学会使用case…when…语句。


实验器材:GW-48试验箱一台,PC一台。


实验原理:


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


由上图可见,四选一多路选择器由两个片选端(a1..0】即a1,a0)和四个输入端(b1,b2,b3,b4)以及一个输出端(y)组成。满足以下关系:



A1


A0


Y=


 0


0


B1


0


1


B2


1


0


B3


1


1


B4


可以用case语句实现。


实验步骤:


1.打开max+plus II软件。


2.File->New->Text Editor flie,单击OK后,输入以下文本:



3.将该文件保存后, File->Project->Set project to current file后,单击compile后,单击start进行编译,改正其中的语法错误,直至编译通过。


4.波形仿真。单击File->New->Waveform Editor Flie,打开波形文件编辑器。在Name栏右击选择Enter Node from SNF,弹出下图:



单击list后,选择出现的所有项,单击OK后,弹出下图,对其中的输入a[1..0]b1,b2,b3,b4进行编辑后保存,在单击simulator后,出现以下仿真波形,分析后发现功能正确。



 


5.选择器件。Assign->Device,出现如下画面,去掉“Show Only…”前的勾,选择APCEX1K->


<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />EP1K30TC144-3->OK.


6.模式选择。因为本实验需要六个输入(a1a0b1,b2,b3,b4),一个输出(y),,因此选择模式6.


7.管教分配.得到如下的分配关系:


8.管脚锁定assign->Pin/Location/Chip后,分配结果如右图:


7.下载验证。重新编译一边,连接好试验箱,接通电源,点击下载,验证后发现功能圆满实现。



相关量


对应器件


I/O


管脚


A1


8


PIO13


27


A0


7


PIO12


26


B1


6


PIO11


23


B2


5


PIO10


22


B3


4


PIO9


21


B4


3


PIO8


20


y


LED1


PIO16


30


 


数据处理及结果讨论:


在本实验中我学会了使用case…when…语句来设计产品。进一步学会了max+plus IIGW-48的配置方法。


关于四选一多路选择器的一点思考:


1.if…elsif…else语句设计四选一多路选择器




library ieee;


use ieee.std_logic_1164.all;


entity mux<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />41a is


port(a1,a0:in std_logic;


--输入选择信号


     b1,b2,b3,b0:in std_logic;


--输入信号


     y:out std_logic);


end entity;


architecture art of mux41a is


begin


process(a1,a0)


begin


if (a1='0'and a0='0')then y<=b0;


elsif(a1='0'and a0='1')then y<=b1;


elsif( a1='1'and a0='0')then y<=b2;


elsif( a1='1'and a0='1')then y<=b3;


else null;


end if;


end process;


end;


 


2.mux21来实现


1mux21的设计library ieee;


use ieee.std_logic_1164.all;


--use ieee.std_logic_unsigned.all;


entity mux21 is


port(sel:in std_logic;


--输入选择信号


     b1,b0:in std_logic;


--输入信号


     y:out std_logic);


end entity;


architecture art of mux21 is


begin


process(sel)


begin


case sel is


when '0'=>y<=b0;


when '1'=> y<=b1;


when others=>null;


end case;


end process;


end;


2File->Create Default File生成mux21的图形符号。


3新建图形文件,在其中调入mux21,结合基本门电路设计下图所示电路,编译通过。


4建立仿真文件,得到下图,验证功能完



全正确。



 


总结:


1.本实验可以采用多种方式来实现。可以进一步锻炼自己的灵活运用能力。


2.通过生成图形符号的方式,可移植性很强,类似于文本设计中的元件例化。但是更直观,更方便,不易出错。可以在以后的设计中调用,大大的缩短设计时间。


3.图形方式的缺点是不易修改,不便于设计复杂的系统。

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2012-9-19 19:22

没看懂。。。。。。

用户242117 2009-11-1 16:37

haohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaohaovvvvvvvvvvvvv
相关推荐阅读
用户1425221 2008-12-05 20:34
我精心整理的一个温度传感器18B20的程序包,可直接调用
这个程序适用于12MHz晶振的51单片机,默认为89C52系列,如果是89C51的话,把头文件改为#include "reg51.h"就可以了,下面是头文件和C文件,大家在工程里加入C文件,在主程序中...
用户1425221 2008-11-20 18:49
试验一、一位二进制全加器的实现
试验一、一位二进制全加器的实现实验项目:一位二进制全加器的实现  实验目的:1.学会熟练使用maxplus II编译工具。          2.熟悉VHDL文本设计方法。          3.学会...
我要评论
2
10
关闭 站长推荐上一条 /3 下一条