内蒙古工业大学CPLD与FPGA实验_第1页
内蒙古工业大学CPLD与FPGA实验_第2页
内蒙古工业大学CPLD与FPGA实验_第3页
内蒙古工业大学CPLD与FPGA实验_第4页
内蒙古工业大学CPLD与FPGA实验_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学校代码: 10128学 号: CPLD与FPGA实验报告 实验一 组合逻辑电路的设计一、 实验目的:1、 掌握用VHDL语言和EPLD进行组合逻辑电路的设计方法。2、 加深对EPLD设计全过程的理解。3、 掌握组合逻辑电路的静态测试方法。二、 实验设备:1、 PC机2、 EDA实验箱(主芯片是ALTERA EPM7128SLC84-15)。三、 实验内容:1、 用VHDL语言输入法设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于5时,判别电路输出为1;反之为0。2、 用VHDL语言输入法设计四个开关控制一盏灯的逻辑电路,要求合任一开关,灯亮;断任一开关,灯灭。3、 用

2、VHDL语言输入法设计一个优先权排队电路。排队顺序为:A=1 最高优先级B=1 次高优先级C=1 最低优先级要求输出端最高只能有一端为“1”,即只能是优先级较高的输入端所对应的输出端为“1”。四、 实验步骤:1、 采用文本编辑器输入VHDL语言源程序,建立工程。2、 编译。3、 仿真。4、 对芯片进行编程。5、 根据管脚分配情况连线。(1) 四舍五入判别电路的四个输入管脚分别与四个拨码开关相连,输出数据与LED灯相连。(2) 开关控制电路的四个输入管脚分别与四个按键开关相连,输出管脚与LED灯相连。(3) 优先权排队电路的A、B、C三个信号分别连三个按键开关,三个输出信号分别连三个LED灯相连

3、。6、 控制输入信号(按键或拨码开关),观察电路输出(LED灯的亮与灭)。五、 实验报告要求:1、 给出电路的VHDL描述、仿真结果。2、 说明波形图中输入数据的给定依据。3、 说明物理连线情况以及物理连线与编译时进行管脚分配有何关系?六、 实验程序及运行结果1用VHDL语言输入法设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于5时,判别电路输出为1;反之为0。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;enti

4、ty sy is port(d: in std_logic_vector(3 downto 0);y: out std_logic); end sy; architecture beha of sy is signal datain:integer; begin datain<=conv_integer(d); process begin if (datain>=5) then y<='1' else y<='0' end if; end process; end beha; 结论:四舍五入就是要实现使用四位二进制数,当其数值小于五时使其

5、输出结果为0,反之输出结果为1.即00000001001000110100输入状态时此时的输出结果都是0,反之都是1。所截图中的输入为0001此时符合条件既能实现功能2用VHDL语言输入法设计四个开关控制一盏灯的逻辑电路,要求合任一开关,灯亮;断任一开关,灯灭。library ieee; use ieee.std_logic_1164.all; entity sy1_2 is port (a,b,c,d: in std_logic; clk: in std_logic; y:out std_logic); end sy1_2 ; architecture beha of sy1_2 is si

6、gnal q:std_logic; begin process(clk) begin if(clk'event and clk='1')then if(a='1')or(b='1')or(c='1')or(d='1')then q<=not q; end if; end if; end process; y<=q;end beha;结论:让clk作为敏感信号,当clk变化并处于上升沿时,此时a,b,c,d,任一输入都有效,并且会使此时状态翻转,所截图中正是b=1,而其他三者状态都为0,输出状态为

7、1,就是开关处于开的状态。3用VHDL语言输入法设计一个优先权排队电路。排队顺序为:A=1 最高优先级B=1 次高优先级C=1 最低优先级要求输出端最高只能有一端为“1”,即只能是优先级较高的输入端所对应的输出端为“1”。library ieee; use ieee.std_logic_1164.all; entity sy1_3 is port(abci: in std_logic_vector(2 downto 0); abco: out std_logic_vector(2 downto 0); end sy1_3; architecture beha of sy1_3 is begin

8、 process(abci) begin case abci iswhen "000"=> abco<="000" when "001"=>abco<="001" when "010"=>abco<="010" when "011"=> abco<="010" when others=>abco<="100" end case; end process; e

9、nd beha; 结论:题目中要求不管输入什么输出只能有一个状态为1,输出也要看输入的优先级,截图中的是b输入为1其他值为0,所以输出优先b,符合题意实验二 计数器及时序电路一、 实验目的:1、 了解时序电路的VHDL语言设计方法。2、 了解同步计数器的使用方法。3、 理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器。二、 实验设备:1、 PC机2、 EDA实验箱(主芯片是ALTERA EPM7128SLC84-15)。三、 实验内容:1、 用VHDL语言输入法设计一个同步四位二进制加法计数器和六进制同步计数器。2、 用74LS161两个宏连接成八位二进制同步计数器。3、 用74L

10、S161宏,同时采用清零和置数法组成六进制和十二进制计数器。四、 实验步骤:1、 采用文本编辑器输入VHDL语言源程序,或采用原理图输入法从MF库中调用器件74161,生成原理图,之后建立工程。2、 编译。3、 仿真。4、 对芯片进行编程。5、 根据管脚分配情况连线。(1) 根据芯片特点,管脚分配时一般将时钟信号分配给83脚,复位信号分配给1脚。若有使能信号,使能信号分配给84脚。(2) 时钟信号的连接:将实验板上提供的时钟与芯片的83脚相连。(3) 复位信号的连接:将实验板上的某按键开关输出与芯片的1脚相连。(4) 将计数器的输出端分别与LED灯相连。6、 按动复位键,观察实验结果。7、 改

11、变输入时钟信号的频率,观察实验结果。五、 实验报告要求:1、 给出电路的VHDL描述或电路原理图、仿真结果。2、 采用原理图输入法进行设计时,说明设计思路。3、 说明仿真波形图中输入数据的给定依据。4、 说明物理连线情况。5、 时钟频率改变后,实验结果有何变化。一:同步四位二进制加法计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sy2_1 IS PORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; OUT1:OUT STD_LOGIC_VECT

12、OR(3 DOWNTO 0); END sy2_1; ARCHITECTURE SS OF sy2_1 IS SIGNAL sy2: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,CLR) BEGIN IF CLR='0' THEN OUT1<="0000" ELSIF (CLK'EVENT AND CLK='1') THEN IF CNT="1111" THEN CNT<="0000" ELSE CNT<=CNT+'1

13、' END IF; OUT1<=CNT; END IF; END PROCESS; END SS; 二:六进制同步计数器library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sy2_2 is port(clk,clr,en:in std_logic; car:out std_logic; q:out std_logic_vector(2 downto 0);end sy2_2; architecture art of sy2_2 is signal cntout:std

14、_logic_vector(2 downto 0); begin q<=cntout; process(clk) begin if (clk'event and clk='1') then if clr='1'then cntout<="000" car<='0' elsif en='1'then if cntout="101"then cntout<="000" car<='1' else cntout<=cn

15、tout+'1' car<='0' end if; end if; end if; end process; end art;三:八位二进制同步计数器四:清零法六进制计数器五:置数法六进制计数器六:清零法十二进制七:置数法十二进制实验三 扫描驱动显示电路设计(设计性实验)一、实验目的1 了解实验箱中8位七段数码管显示模块的工作原理。2 熟悉VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。3 掌握利用CPLD/FPGA设计8位七段数码管扫描显示驱动电路的方法。二、实验设备1 计算机(配置为:P4 CPU 128M内存); 2 MAX+plu

16、s开发工具软件;3 EL教学实验箱 ; 4 万用表 ; 5 DS 5022M型双踪数字示波器;三、 扫描原理 为了减少8位显示信号的接口连接线,实验箱中的数码显示采用扫描 显示工作模式。即8位数码管的七段译码输入(a,b,c,d,e,f,g)是并联在一起的,而每一个数码管是通过一个3位选择sel2.0来选定 的。sel与数码管之间是一3-8译码的关系,即sel为“000”时,选中第一个数码管,sel为“111”时,选中第八个数码管。四、 设计任务本实验要求在给定子模块程序的基础上,画出设计原理图。自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在8个数码管上轮流显示字符0F的功能。五、设

17、计要求1要求在Max+plus平台上用VHDL语言编写顶层模块程序,调试、仿真成功后,下载至ALTER EPM7128SLC84-15芯片,再利用外接电路实现以上设计功能。2扫描驱动显示电路有2个输入端(clk,reset),14个输出端(a,b,c,d,e,f,g)和(y0,y1,y2,y3,y4,y5,y6,y7),全部为TTL电平,管脚分配任意,如下图所示。 3根据芯片特点,管脚分配时将时钟信号分配给83脚,复位信号分配给1脚,使能信号分配给84脚。六、实验报告要求1 给出设计源程序、仿真结果、说明设计思路。2 改变输入时钟信号的频率,观察实验结果如何改变。3字符扫描显示亮度与扫描频率的

18、关系,且让人眼感觉不出闪烁现象的最低扫描频率是多少library ieee; use ieee.std_logic_1164.all; entity sy3_1 is port(clk,reset: in std_logic; a,b,c,d,e,f,g: out std_logic; y: out std_logic_vector(2 downto 0); end sy3_1; architecture beha of sy3_1 is component counter16 port(clk,clr: in std_logic; count: out std_logic_vector(3

19、downto 0); end component; component decdisp port(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_logic); end component; component yima3 port(x: in std_logic_vector(2 downto 0); y: out std_logic_vector(2 downto 0); end component; signal cont: std_logic_vector(3 downto 0); signal sel3:

20、 std_logic_vector(2 downto 0); begin d1:counter16 port map(clk=>clk,clr=>reset,count=>cont); d2:decdisp port map (datain=>cont,a=>a,b=>b,c=>c,d=>d,e=>e,f=>f,g=>g); d3:yima3 port map(x=>cont(2 downto 0),y=>y); end beha; library ieee; use ieee.std_logic_1164.all;

21、 use ieee.std_logic_unsigned.all; entity counter16 is port(clk,clr: in std_logic; count: out std_logic_vector(3 downto 0); sel: out std_logic_vector(2 downto 0); end counter16; architecture beha of counter16 is signal cnt: std_logic_vector(3 downto 0); begin process(clk,clr) begin if clr='0'

22、then cnt<="0000" elsif clk='1' and clk'event then cnt<=cnt+'1' end if; count<=cnt; sel<=cnt(2 downto 0);end process;end beha;library ieee; use ieee.std_logic_1164.all; entity decdisp is port(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_log

23、ic); end decdisp; architecture beha of decdisp is signal dataout: std_logic_vector(6 downto 0); begin a<=dataout(6); b<=dataout(5); c<=dataout(4); d<=dataout(3); e<=dataout(2); f<=dataout(1); g<=dataout(0); process(datain) begin case datain is when "0000"=> dataout&

24、lt;="1111110" when "0001"=> dataout<="0110000" when "0010"=> dataout<="1101101" when "0011"=> dataout<="1111001" when "0100"=> dataout<="0110011" when "0101"=> dataout<="1011011" when "0110"=> dataout<="1011111" when &q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论