学生实验报告
实验课名称:VHDL硬件描述语言
实验项目名称:双向移位寄存器
专业名称:电子科学与技术
班级:32050802
学号:**********
********
教师姓名:程鸿亮
__2010_年_11_月_14_日
一、实验名称:
双向移位寄存器
二、实验目的与要求:
设计一个双向移位寄存器,理解移位寄存器的工作原理,掌握串入\并出端口控制的描述方法。
通过VHDL编程,实现双向移位寄存器,要求有1个方向控制端、1个时钟脉冲输入、1个异步清零端、1个数据输入端以及8位的并行数据输出端,具体接口说明如下图所示:
三、实验内容:
1. 打开QuartusII软件,建立一个新的工程:
1) 单击菜单File\\New Project Wizard…
2) 输入工程的路径、工程名以及顶层实体名。
3) 单击Next>按钮,由于我们建立的是一个空的项目,所以没有包含已有文件,单击Next>继续。
4) 设置我们的器件信息:
5) 单击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\laster中。
3) 单击Tool\\Programmer打开下载窗口:
通过对话框中的Hardware Setup按钮,选择下载设备:USB-Blaster。参照上图所示的选项,点击Start完成下载。
四、实验条件:
1. WindowsXP操作系统
2. QuartusII EDA开发系统
3. 杭州康芯SOPC硬件开发平台
a(5)<=a(4);qout(4)<=a(4);
a(6)<=a(5);qout(5)<=a(5);
a(7)<=a(6);qout(6)<=a(6);
a(8)<=a(7);qout(7)<=a(7);
elsif(dir='1')then--move right -->
a(8)<=din;
a(7)<=a(8);qout(7)<=a(8);
a(6)<=a(7);qout(6)<=a(7);
a(5)<=a(6);qout(5)<=a(6);
a(4)<=a(5);qout(4)<=a(5);
a(3)<=a(4);qout(3)<=a(4);
a(2)<=a(3);qout(2)<=a(3);
a(1)<=a(2);qout(1)<=a(2);
a(0)<=a(1);qout(0)<=a(1);
end if;
end if;
end process;
end str;
七、实验结果与分析:
1. 功能仿真:
2.时序仿真: