学生实验报告实验课名称:VHDL硬件描述语言实验项目名称:八选一数据选择器专业名称:电子科学与技术班级:32050801学号:05********教师姓名:程鸿亮2010年11月06日组别第三组同组同学钞田田实验日期2010年11月06日实验室名称______________成绩_____ 一.实验名称八选一数据选择器二.实验目的与要求目的:设计一个8选1的数据选择器,初步掌握QuartusII软件的使用方法以及硬件编程下载的基本技能。
要求:通过VHDL编程,实现一个数据选择器,要求有8位数据输入端,1位数据输出端,通过3位地址输入信号寻址,并具有输出使能功能。
首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。
三.实验内容1、打开QuartusII软件,建立一个新的工程:1)单击菜单File\New Project Wizard…2)输入工程的路径、工程名以及顶层实体名。
3)单击Next>按钮,进入下一个界面。
由于我们建立的是一个空的项目,所以没有包含已有文件,单击Next>继续。
4) 设置我们的器件信息:设置为cyclone∏,选择FBGA,484,8,在available devices中选择EP2C35F484C8 33216 483840 70 4, 然后单击Next>,指定第三方工具。
这里我们不指定第三方EDA工具,单击Next>后结束工程建立。
2、建立VHDL文件:1) 单击File\New菜单项,选择弹出窗口中的VHDL File项,单击OK按钮以建立打开空的VHDL文件,注意此文件并没有在硬盘中保存。
2) 在编辑窗口中输入VHDL源文件并保存,注意实体名、文件名必须和建立工程时所设定的顶层实体名相同。
3) 编译工程单击Processing\Start Compilation开始编译,编译过程中可能会显示若干出错消息,参考提示原因对程序进行修改直到编译完全成功为止。
3. 建立矢量波形文件1) 单击File\New命令,在弹出的对话框中选择Other Files页面中的Vector Waveform File项,打开矢量波形文件编辑窗口。
2) 双击窗口左边空白区域,打开Insert Node or Bus对话框。
3) 单击Node Finder…按钮,打开以下对话框,选择Filter下拉列表中的Pins:all,并点击List列出所有的端口,通过>>按钮把这些端口加入到右面的窗口中,单击OK完成端口的添加。
4) 回到波形编辑窗口,对所有输入端口设置输入波形,具体可以通过左边的工具栏,或通过对信号单击鼠标右键的弹出式菜单中完成操作,最后保存次波形文件。
4. 进行功能仿真1) 单击Assignments\Settings…,在弹出对话框中做相关设置。
在Simulation mode设置为Functional,即功能仿真。
指定仿真波形文件后单击OK完成设置。
2) 单击Processing\Generate Functional Simulation Netlist以获得功能仿真网络表。
3) 单击Processing\Start Simulation进入仿真页面。
此仿真中不包含延迟信息。
5. 进行时序仿真如果功能仿真无误,可进入时序仿真,时序仿真是增加了相关延迟的仿真,是最接近实际情况的仿真。
1) 单击Assignments\Settings…,在弹出对话框中做相关设置。
在Simulation mode设置为Timing,即时序仿真。
指定仿真波形文件后单击OK完成设置。
2) 单击Processing\Start Simulation进入仿真页面。
如果在时序上也没有问题,就可以进入下载工作了。
6. 器件的下载1) 指定器件引脚:单击Assignments\Assignment Editor,打开引脚分配编辑框。
为每一个端口指定器件的引脚,在引脚指定过程中需要参照开发系统所给的I/O端口映射表,通过开发平台上每个I/O器件附近的I/O编号,在映射表中找到相应的引脚名,填入上图所示的对话框即可。
2) 连接下载线通过USB-blaster下载电缆连接PC机和开发平台,如果首次使用下载电缆,此时操作系统会提示安装驱动程序,此USB设备的驱动处于QuartusII安装目录中的\drivers\usb-blaster中。
3) 单击Tool\Programmer打开下载窗口。
通过对话框中的Hardware Setup按钮,选择下载设备:USB-Blaster,点击Start完成下载。
在硬件实现中,要求:I用实验平台的拨动开关实现8位输入信号(d0~d7),要求使用最右面8个开关II用实验平台的按键实现地址信号和使能信号。
采用模式0的输入方式,并使用最左边的键6~键8三个按键实现地址输入,以及键3实现使能信号。
III输出采用LED发光阵列的LED12。
四.实验条件1. WindowsXP操作系统2. QuartusII EDA开发系统3. 杭州康芯SOPC硬件开发平台五.实验原理在数字系统中,往往需要将公共数据线上的信号传送到不同单元中去,这是由数据分配器完成的。
另外,也常常需要把多个通道的信号传送到公共数据上去。
完成这一切功能的逻辑电路称为数据选择器,又叫数据开关。
它们传送的信号是0,1逻辑电平,而不能传送模拟信号。
常见的74151就是一个八选一数据选择器,它有八个数据输入端d0-d7,地址输入端a[2..0], g为使能端,高电平有效和一个数据输出端y。
当使能端g为1时,8个选通端都被截止。
当g为0时,该芯片才从8个输入端中选择一个输出。
此时,地址输入端a[2..0]从000到111之间变换时,可选择不同的通道输出,输出端y输出。
六.源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity selection isport(d0,d1,d2,d3,d4,d5,d6,d7,g:in std_logic;a:in std_logic_vector(2 downto 0);y:out std_logic);end entity selection;architecture one of selection isbeginprocess(g,a) isbeginif g='0' theny<='0';elsecase a iswhen "000" =>y<=d0;when "001" =>y<=d1;when "010" =>y<=d2;when "011" =>y<=d3;when "100" =>y<=d4;when "101" =>y<=d5;when "110" =>y<=d6;when "111" =>y<=d7;when others=>y<='0';end case;end if;end process;end architecture one;七.实验结果与分析1、功能仿真波形2、时序仿真波形3、代码下载后的部分实例说明:键3输出高电平,数据选择器输出使能。
8位输入数据分别是d7~d0:1、0、1、0、1、0、1、0,此时地址信号a[2..0]为“101”选通d1,LED12输出(灯亮)指示d5为低电平。
说明:键3输出高电平,数据选择器输出使能。
8位输入数据分别是d7~d0:1、0、1、0、1、0、1、0,此时地址信号a[2..0]为“001”选通d1,LED12输出(灯亮)指示d1为高电平。
八.讨论和回答问题及体会:1、在进行编译的时候,开始选择的是if语句,使用了很多循环嵌套判断语句,导致了仿真波形处出现了很大的延迟。
经过对语句的不断修改,最后使用case语句,降低了延迟,达到比较好的波形仿真效果。
2、安装驱动程序,此USB设备的驱动处于QuartusII安装目录中的\drivers\usb-blaster 中。
进行USB装载连接时,由于没有正确熟练操作,导致硬件平台加载错误,无法识别硬件设备,最后在老师的指导下,按照正确操作步骤,完成硬件安装。
3、功能仿真无误后,进行时序仿真,不能成功输出时序仿真图,认真阅读操作步骤后,发现问题应该,单击Assignments\Settings,在弹出对话框中做以下设置:Simulation mode 设置为Timing,指定仿真波形文件后单击OK完成设置,再单击Processing\Start Simulation 进入仿真页面。
4、最后要通过USB-blaster下载电缆连接PC机和开发平台,由于没有在经行证书认证,导致不能下载。
在老师的指导下,在Quartus II的Tools菜单下选择License Setup,选择好认证的License文件,点击确定,最终完成了下载。
体会:这是我第一次使用GW48型SOPC开发平台,由于操作方面的陌生,使得开始进度缓慢,在老师的指导下,慢慢探索出了正确的操作方法,使进度大大增加,通过自己编程,不断编译连接过程中,也能够独立发现语法错误并加以改正,而且能够探索出更适合的语句来进行描述,使我对VHDL语言更加熟悉。
虽然在操作过程中遇到了很多问题,但也在老师的指导下顺利解决,发现不足,并且初步掌握QuartusII软件的使用方法以及硬件编程下载的基本技能。