EDA实验报告--
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告
电科133-27-李玲玲
实验一:“四选一“多路选择器
一、实验目的
通过实验让用户逐步了解、熟悉和掌握FPGA开发软件Quartus Ⅱ的使用方法及VHDL的编程方法。
二、实验内容
描述一个“四选一“多路选择器,通过实验实现一个四选一的多路选择器,观察其波形图,实现四选一的原理
三、实验原理
a,b,c,d是四个输入端口,s1和s0为通道选择控制信号端,y为输出端。当s1和s0取值分别为00,01,10和11时,输出端y将分别输出来自输入口a,b,c,d4个输入口分别输入不同频率信号时,针对选通控制端s1,s0的不同电平选择,则输出端y有对应的信号输出。
四、实验步骤
1)使用Quartus Ⅱ建立工程
打开Quartus Ⅱ软件并建立工程;建立图形设计文件;建立文本编辑文件;
2)Quartus Ⅱ工程设计
在VHDL文件中编写源程序,从设计文件创建模块,将led.bsf模块添加到Quartus Ⅱ顶层模块,添加引脚和其他基本单元
3)设置编译选项并编译硬件系统
设置编译选项,编译硬件系统,查看编译报告,下载硬件设计到目标FPGA
五、实验参考程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY led IS
PORT(a,b,c,d:IN STD_LOGIC;
s0,s1:IN STD_LOGIC;
y:OUT STD_LOGIC);
END ENTITY led;
ARCHITECTURE BHV OF led IS
SIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
S <= s1 & s0 ;
PROCESS(s1,s0)
BEGIN
CASE (S) IS
WHEN "00"=>y<=a;
WHEN "01"=>y<=b;
WHEN "10"=>y<=c;
WHEN "11"=>y<=d;
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END ARCHITECTURE BHV ;
六、实验总结
实验二:I/O控制实验
一、实验目的
通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL的编程方法,并熟悉以VHDL文件为顶层模块的设计;学好并体会分支条件语句case的使用方法及FPGA I/O的输入/输出控制。
二、实验内容
SmartSOPC 实验箱上完成8个按键KEY1-KEY8和8个发光二极管LED1-LED8。本实验内容是要求在SmartSOPC 实验箱上完成对8个按键KEY1-KEY8进行监控,一旦有键入则判断其键值,并点亮相应的发光二极管。例如:若KEY3按下,则点亮LED1-LED3发光管。
三、实验原理
SmartSOPC 实验箱8个发光二极管LED1-LED8的电路原理如图2.44所示,芯片输出后通过串连一个限流电阻和一个发光二极管组成,发光管采用共阳接法,降低芯片引脚的输出功率。控制引脚为低电平时,LED点亮;控制引脚为高电平时,LED不亮;
SmartSOPC 实验箱8个按键KEY1-KEY8的电路原理图如图2.45所示,芯片输入通过串联一个限流电阻和一个按键开关组成,开关采用共阴接法,降低系统的运行功率。按钮按下时,输入引脚为低电平,度数为0;按钮悬空时,输入引脚为高电平,度数为1。
FPGA的所有I/O引脚单独配置为输入口,不过这种配置是系统自动完成的。当该I/O口被设置为输入口使用时,该I/O控制模块将直接使三态缓冲区的控制端接地,使得该I/O引脚对外呈高阻态,这样该I/O引脚即可用作专用输入引脚。正确分配并锁定引脚后,一旦在KEY1-KEY8中有键输入,即可在检测到键盘输入的情况下,继续判断其键盘值并作出相应的处理。
四、实验步骤
1)建立一个新的工程,编写VHDL程序代码;
2)实验箱配置引脚如表2.2,在引脚适配过程中配置相应的引脚;
3
4)取出SmartSOPC实验箱,将实验箱上的JP6的LED0-LED7、LED1-LED8分别与FPGA引脚50、53-55、176和47-49相连,并接通电源;
5)将程序下载到实验箱,并进行试验,观察试验结果,并分析其原因。
五、实验参考程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_Arith.ALL;
USE IEEE.STD_LOGIC_Unsigned.ALL;
ENTITY keyled IS
PORT(
key:IN STD_LOGIC_VECTOR(7DOWNTO 0);
led:OUT STD_LOGIC_VECTOR(7DOWNTO 0));
END;
ARCHITECTURE one OF keyled IS
SIGNAL led_r: STD_LOGIC_VECTOR(7DOWNTO 0);
SIGNAL buffer_r:STD_LOGIC_VECTOR(7DOWNTO 0);
BEGIN
led<=led_r;
PROCESS(key,buffer_r)
BEGIN
buffer_r<=key;
CASE buffer_r IS
WHEN"11111110"=> led_r<="11111110";