logo资料库

VHDL实验4 _七段数码管译码扫描显示.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
学 生 实 验 报 告 实 验 课 名 称:VHDL 硬件描述语言 实验项目名称:七段数码管译码扫描显示 专 业 名 称:电子科学与技术 班 学 级:电科二班 号:*** 学 生 姓 名:*** 教 师 姓 名:*** __2010__年_11_月_06_日
组别_____________________同组同学_______________________ 实验日期_____年___月___日 实验室名称______________成绩_____ 一、实验名称:七段数码管译码扫描显示 二、实验目的与要求: 实验目的:通过对译码和串行扫描电路的设计,理解多位数码管串行扫描输 出的工作原理以及七段数码管的译码以及串行扫描输出的设计方法。 实验要求:通过VHDL编程,实现7段数码管的译码输出,并通过所设计的串 行扫描控制,对8个7段数码管扫描输出,要求8个数码管从左到右分别显示“1”、 “2” 、“3” 、“4” 、“5” 、“6” 、“7” 、“8”,并且每一位都对 应有一个显示控制端,当控制端为高电平时,对应数码管点亮,否则熄灭。具体 接口如下所示: clk:时钟输入端,此信号是 串行扫描的同步信号。 data_control[7..0]:8 个分别控制数码管显示的输入 信号; led_addr[7..0]:对8个数码管进行串行扫描的输出控制信号; seg7_data[6..0]:驱动 7 段数码管各显示段的输出信号; 首先在 QuartusII 上进行功能和时序仿真,之后通过器件及其端口配置下载 程序到 SOPC 开发平台中。在硬件实现中,要求: 1. 用实验平台的 8 个数码管输出显示(共阴接法),并且用其下方的 8 个按键分 别控制对应数码管的显示与否。
注:采用 I/O 模式 5 实现输入控制和输出显示方式。为了实现数码管的串行 扫描,必须把数码管连接成串行控制输出电路。 2. 扫描所用的时钟信号采用实验平台的 clock0 时钟资源: 可以通过跳线选择不同的时钟频率,此频率不能选择的太高或太低,频率太 低将不满足人眼视觉暂留特性的要求,频率太高,器件速度跟不上,地址和数据 无法在1个时钟周期大部分时间内对准,造成显示模糊不清。 注:开发平台的适配板上有 20MHz 时钟资源,通过适配板上的跳线可以选择采用 适配板的固定 20MHz 频率信号或者 I/O 板上的 clock0 时钟资源(此两类时钟在管 脚映射表中都称为 clock0),适配板上的跳线如下所示:
三、实验内容:  新建工程: 1、打开 Quartus,新建工程,选择好路径,工程顶层名为 Scan8led ; 2、新建工程,如果包含已编好的文件则可以添加,如果无则可以略过 ; 3、选择我们的器件信息: 4、单击 Next>,指定第三方工具,这里我们不指定第三方 EDA 工具,单击 Next>后 结束工程建立。  建立编译 VHDL 文件: 1、单击 File\New 菜单项,选择弹出窗口中的 VHDL File 项,单击 OK 按钮以建 立打开空的 VHDL 文件,并以工程顶层文件名保存。 2、输入源代码完后单击 Processing\Start Compilation 开始编译,并修改其中 的错误直到没有为止。  建立矢量波形文件 1 单击 File\New 命令,选择其中的 Vector Waveform File 项,点击 OK 建立空 的波形文件,打开矢量波形文件编辑窗口;
2 双击窗口左边空白区域,打开 Insert Node or Bus 对话框; 3 单击 Node Finder…按钮,打开以下对话框,选择 Filter 下拉列表中的 Pins: all,并点击 List 按酒以列出所有的端口,通过>>按钮把这些端口加入到右面 的窗口中,单击 OK 完成端口的添加; 4 回到波形编辑窗口,对所有输入端口设置输入波形,具体可以通过左边的工具 栏,或通过对信号单击鼠标右键的弹出式菜单中完成操作,最后保存次波形文 件。  进行仿真: 1、单击 Assignments\Settings ,Simulation mode 设置为 Functional,即功 能仿真。指定仿真波形文件后单击 OK 完成设置; 2、单击 Processing\Generate Functional Simulation Netlist 以获得功能仿 真网络表; 3、单击 Processing\Start Simulation 完成功能仿真。 4、如果功能仿真无误后进行时序仿真:单击 Assignments\Settings,在弹出对 话框中 Simulation mode 设置为 Timing,即时序仿真。指定仿真波形文件后 单击 OK 完成设置。 5、单击 Processing\Start Simulation,完成时序仿真。 6、如果时序仿真也没错即可下载工作了。 四、实验条件: 1. WindowsXP 操作系统 2. QuartusII EDA 开发系统 3. 杭州康芯 SOPC 硬件开发平台
五、实验原理: 见如下框图: 本实验需要实现数码管的控制与输出数据同时输出 扫描,其中需要用到移位累计等计算。
六、源代码: library ieee; use ieee.std_logic_1164.all; entity scan8led is port(clk:in std_logic; data_contral:in std_logic_vector(7 downto 0); led_adder:out std_logic_vector(7 downto 0); seg7_data:out std_logic_vector(6 downto 0)); end entity; architecture wen of scan8led is signal data_temp:std_logic_vector(7 downto 0):="00000001"; begin process(clk,data_contral)is variable c: integer range 1 to 8 :=1; begin if(clk'event and clk='1')then data_temp<=data_temp(6 downto 0)&data_temp(7); led_adder<=data_temp; case c is when 1=>seg7_data<="0000110"; when 2=>seg7_data<="1011011"; when 3=>seg7_data<="1001111"; when 4=>seg7_data<="1100110"; when 5=>seg7_data<="1101101"; when 6=>seg7_data<="1111101"; when 7=>seg7_data<="0000111"; when 8=>seg7_data<="1111111"; end case; c:=c+1; if(c=9)then c:=1; end if; end if; end process; end architecture wen;
七、实验结果与分析: 1、功能仿真: 2、时序仿真: 分析:经过仿真,刚开始时 led_ledder 和 seg7_data 每一位均为’0’,刚开始 还以为是程序出错了,但后来发现,只是起始时间是这样,因为 clk 的时钟脉冲 还没有到来,所以各位默认为’0’,只是虚惊一场。时序仿真虽噪声比较多, 但并不影响,所以可以下载进行实物仿真。
分享到:
收藏