《3实验三动态扫描显示电路的设计与调试.docx》由会员分享,可在线阅读,更多相关《3实验三动态扫描显示电路的设计与调试.docx(8页珍藏版)》请在三一办公上搜索。
1、实验三 动态扫描显示电路的设计与调试一、实验目的:1. 进一步熟悉QuartusII设计的全过程,掌握引脚锁定、器件下载和 硬件调试,熟悉EDA实验箱的使用。2. 了解8位数码管扫描显示模块的工作原理,学习扫描显示电路的 设计,设计标准扫描驱动电路模块,以备后面实验调用。二、实验原理:图3.1所示的是8位数码扫描显示电路,其中每个数码管的8个 段:h、g、f、e、d、c、b、a(dp是小数点)都连在一起,8个数码 管分别由8个选通信号k1k8来选择。被选通的数码管显示数据。例 如,在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3 对应的数码管显示来自段信号端的数据,而其他7个数码管呈
2、现关闭 状态。根据这种电路状况,如果希望在8个数码管显示希望的数据, 就必须使得8个选通信号k1k8分别被单独选通,与此同时,在段信 号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号 的扫变,根据人眼的视觉暂留原理,就能实现动态扫描显示的日的。图3.1 8位数码扫描显示电路SCAN_LED.VHD是扫描显示的示例程序,其端口示意图如图3.2 所示。其中CLK是扫描时钟;SG (6 downto 0)为7段控制电路,由 高位至低位分别接图3.1中的g、f、e、d、c、b、a 7个段;BT(7 downto 0)是位选控制信号,接图3.1中的8个选通信号k1k8。程序中CNT8 是一个
3、3位计数器,作扫描计数信号,由进程P2生成;进程P3是7 段译码查表输出程序;进程P1是对8个数码管选通扫描程序,例如 当CNT8等于“001”时,K2对应的数码管被选通,同时,A被赋值3, 再由进程P3译码输出“1001111”,显示在数码管上即为“3”;当CNT8 扫变时,将能在8个数码管上显示数据:13579BDF。上述程序的显示数据采取的是直接给出的方式。也使得所有8个 显示数据都来自其他缓冲器,如来自A/D采样的数据、来自各计数器 的输出数据等。图3.2动态扫描显示程序端口示意图三、实验步骤:1. 新建工程:1)工程名可任意命名,注意顶层设计文件的实体名2)添加文件到工程中(默认)3
4、)选择日标芯片(Cyclone系列EP1C3T144C8)4)选择EDA工具(默认)2. 输入设计文件1)新建一个 VHDL 文本文件(FILENEWVHDL File)2)编辑输入VHDL程序3)保存输入程序(保存到刚建的文件夹中,文件名必须与程序中的实体名一致)3. 编译设计文件1)将要编译的文件设为顶层文件:菜单ProjectSet as Top-Level Entity2)编译前设置:3)启动编译:菜单ProcessingStart Compilation (或快捷按 钮)4. 仿真1)新建一个波形文件(菜单FileNew一标签Other Files 一 Vector Waveform
5、 File)2)设置仿真范围(菜单EditEnd Time50us)3)添加端口信号节点(在Name列表的空白处双击一Node Finder List选择要加入的端口信号)4)编辑输入端口的信号波形(先用放大工具将观察范围设置到 合适的范围再编辑信号波形)5)保存波形文件,启动仿真(菜单ProcessingStartSimulation,或快捷按钮)6)记录并观察分析仿真波形报告以上操作的详细说明请参阅实验一。5. 引脚锁定1)执行 Assignments|Assignments Editor 命令或者直接单击 Assignments Editor按钮,弹出如图3.3所示的引脚编辑对话框,在
6、对话框的Category栏目选择Pin项。-Jgj x|:我Quartus II - D:niyeda_2mybdRadder l - Assignment Editor咳 File Edit View Project Assignments Processing Tools Window Helpjj S Category:Pin= Logic OptionsJ Q邕E龟魁g c略弓密%分密参粉品尊 塔/菱0竭&1 e &xN Edit:!*?_2_375NameWbW tin。匚口 itCsumLocationPin%PiiMPin_ZlPi*7Pin 36General Function
7、位收IQRq叫 I/OR口叫 I/OKurrin IjCi口::i|iii IQSpecial FunctionReservedjj 田 Node Filter:Click 出e Nude Filter button to view more options国 Information: This cell specifies the pin name to which you want to make an assignment. Double-click to create a new assignment.图3.3引脚编辑对话框2)BT(7 dow皿函0)和clk等端口陂用鼠标选择其中的一
8、个端1 口后,再用用鼠标双击Name栏日下的new,在其下拉菜单中列出了 计麟务的全部输入和输出端口名,例如本例中|SG & downto N)、鼠标双击Location栏日下的new,在其下拉菜单中列出了日标芯 片全部可使用的I/O端口,然后用鼠标选择其中的一个I/O端口。例 如,将图3.3中的a、b、cin、cout和sum端口,分别选择Pin_23、 Pin_22、Pin_21、Pin_37和Pin_36。赋值编辑操作结束后,存盘并 关闭此窗口,完成引脚锁定。3)锁定引脚后还需要对顶层设计文件重新编译,编译成功后会 自动产生设计电路的下载文件(.sof)。接下来就可下载程序到对应芯片中了
9、。6 .编程下载设计文件1)连接实验箱并口下载线,打开实验箱电源2)设定编程方式。执行Tools|Programmer命令或者直接单击 Programmer按钮,弹出如图3.4所示的硬件编程窗口。图3.4硬件编程窗口3)选择下载文件:用鼠标点击下载方式窗口左边的Add File (添 加文件)按键,在弹出的Select Programming File (选择编程文件) 的对话框中,选择本设计工程日录下的下载文件SCAN_LED.sof。Select Programming File查找范围(I): | d mvbdf三| 匡 廿,岗.、顼MaRadder l.sof文件名:园政1 图3.5选
10、择下载文件对话框打开4 )设置编程器。1若是第一次使用QuartusW,则首先要安装硬件 驱动:在设置编程方式窗口中,点击Hardwaresettings(硬件设置) 按钮,在弹出的如图3.6所示的Hardware Setup硬件设置对话框中 点Add Hardware按键,在弹出的Add Hardware的添加硬件对话框中 选择 ByteBlasterMV 或 USB Blaster 编程方式。例如选择 USB Blaster 编程方式后单击OK铉钮,就可利用计算机的USB 口直接对FPGA进行配置了(一般设置一次即可,以后不必再设)。5)编程下载:下载模式选择JTAG方式,选中要下载的SO
11、F文件, 勾选 Program/Config,执彳亍 Processing|Stare Programming 命令或 者直接按Start Programming按钮,即可实现设计电路到日标芯片的 编程下载(如图3.7)。下载完毕后(右边的progress进度条运行到 100%),FPGA就可以工作了。图3.7硬件编程下载7.硬件测试在实验箱上正确连线后观察结果即可。但是JATG下载模式是把 程序下载到FPGA内部的RAM中,因此掉电后数据丢失,再次上电后 需重新下载。四、实验内容1. 说明提供的参考实验源程序中各语句的含义以及整体功能。对 该设计文件进行编辑后进行编译、仿真(给出仿真波形X引
12、脚锁定、 下载和硬件测试实验,在8个数码管上显示数据:13579BDF(1)在Quartusll上完成设计文件输入后进行编译、仿真(给出 仿真波形)、引脚锁定和器件下载,日标器件是EP1C3T144C8;在实验系统上硬件验证该实验的功能。(2) 输入时钟信号CLK所对应的管脚同实验箱上的时钟源相连;(3) 代表扫描片选地址信号的BT0BT7管脚同实验箱上的位码 输入18位相连;(4) 代表7段字码驱动信号SG0SG6的管脚分别同实验箱上的 段码输入a,b,c,d,e,f,g相连。(5) 通过跳线调节时钟频率,感受“扫描”的过程,并观察字 符亮度和显示刷新的效果。2. 修改参考实验源程序:(1)
13、 修改程序来改变显示内容,使其从左到右依次显示数字1 8,并重复以上实验过程在实验系统上硬件验证功能。(2) 修改程序来改变显示字形,使其从左到右依次显示字母A、 b、c、d、E、F、H、P,并重复以上实验过程。五、思考题:字符显示亮度同扫描频率的关系,且让人眼感觉不出光烁现象的 最低扫描频率是多少?六、实验参考源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED ISPORT (CLK : IN STD_LOGIC;SG : OUT STD_LOGIC_VECT
14、OR(6 DOWNTO 0);-段控制信号输出BT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-位控制信号输出 END SCAN_LED;ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1:PROCESS( CNT8 )BEGINBT = 00000001 ; A = 1;BT = 00000010 ; A = 3 ;BT = 00000100 ; A = 5 ;BT = 00001000 ;
15、 A = 7 ;BT = 00010000 ; A = 9 ;BT = 00100000 ; A = 11 ;BT = 01000000 ; A = 13 ;BT = 10000000 ; A WHEN 001=WHEN 010=WHEN 011=WHEN 100=WHEN 101=WHEN 110=WHEN 111=WHEN OTHERS = NULL ;END CASE ;END PROCESS P1;P2:PROCESS(CLK)BEGINIF CLKEVENT AND CLK = 1 THENCNT8 SGv= 0111111;WHEN 2 =SGv= 1011011;WHEN 4 =
16、 SG v= 1100110;WHEN 6 = SGSGv= 1111111;WHEN 10 = SG v= 1110111;WHEN 12 = SG v= 0111001;WHEN 14 = SG v= 1111001;WHEN OTHERS = NULL;END CASE ;END PROCESS P3;WHEN 1 = SG v= 0000110;WHEN 3 = SG SG v= 1101101;WHEN 7 = SG v= 0000111;WHEN 9 =SGv= 1101111;WHEN 11 = SG v= 1111100;WHEN 13 = SG v= 1011110;WHEN 15 = SG= 1110001;END one;