利用QuartusⅡ完成三位数码管显示电路
三位数码管显示数字部分实验报告
一、实验目的(1)结合三位数码管显示实验,熟悉软件quartus 的使用,熟悉FPGA 开发模式;(2)熟悉DDA 系列数字系统实验平台的使用; (3)了解图形输入、文本输入、层次实际的过程; (4)了解图形输入的注意事项和画图技巧; 二、实验设计方案 1、原理说明采用动态扫描的方式循环的选通3位数码管显示多个字符,同时字符的输入由数据的多路复选器完成,字符的输入手工完成; 2、结构流程因为2-3译码器与3-1数据选择器共用一个sel 选择信号,所以3位数码管循环输出时对应固定的有数据选择器选择来的字符(字符由手动输入得来) 三、实验流程1、设计模4计数器,完成仿真、下载验证;2、设计2-3译码器;3、设计3-1数据选择器;模4计数器 2-3译码器3选1数据选择器7449 7段译码器循环选择3位数码管中的某一个在选择的数码管上输出字符4、综合数码管显示扫描电路,完成仿真、下载验证;以模4计数器为例演示工程的建立、设计输入(图形法)、编译、仿真验证模4计数器的设计 1、设计方案 clk 模块:电脑仿真信号,共2us ,周期100ns ,占空比50%,方波信号; Counter 模块:使能信号全部有效,计数器输出为4计数器清空;(利用与非门和一个寄存器完成) 输出模块:输出计数器的q[0].q[1]分别为输出的低一位和高一位。
2、设计实验流程说明: (1)建立工程:1.工程名和顶层文件名为counter4;2.目标器件为Flex10k ,型号TI144-4CLK 信号Counter 使能端全部有效每次CLK 信号有效,计数加1D 寄存器,输入为计数器低2位的与非信号,输出到计数器的clr 端,当输入为0是,计数器清空(2)建立电路、设计输入clk信号1、在元件库中找到原件放入图中、连接;2、连线,给总线、支线命名,方便下一步仿真;3、电路原理见上。
(3)编译:(4)仿真验证:建立clk波形图:设置输入输出信号。
Quartus ii 11.0 Qsys实现7段数码管实验
cnt[0]++; // 10 进制 if( 10 == cnt[0] ) { cnt[0] = 0; cnt[1] ++; } if( 6 == cnt[1] ) { cnt[1] = 0; cnt[2] ++; } if( 10 == cnt[2] ) { cnt[2] = 0; cnt[3] ++; } if( 6 == cnt[3] ) { cnt[3] = 0; } // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_BASE, 0x00 ); }
Qsys 中:
原理图:
Nios 代码:
/******************************** Includes ********************************/ #include "system.h" #include "altera_avalon_pio_regs.h" #include "altera_avalon_timer_regs.h" #include "alt_types.h" #include "sys/alt_irq.h"
alt_ic_isr_register( TIMER_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_IRQ,
{ IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_BASE, 0x00 ); // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_PERIODL( TIMER_BASE, 50000000 ); // 设置定时周期 1s IOWR_ALTERA_AVALON_TIMER_PERIODH( TIMER_BASE, 50000000>>16 ); IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_BASE, 0x07 ); ISR_handle_timer, NULL, 0x0 ); // 注册中断 } // 使能中断
Quartus数码管
/*---------------------------------------------------*/
endmodule
4'b0001: Led <= 7'b0000_110;//输入0001,显示1
4'b0010: Led <= 7'b1011_011;//输入0010,显示2
4'b0011: Led <= 7'b1001_111;//输入0011,显示3
4'b0100: Led <= 7'b1100_110;//输入0100,显示4
4'b0101: Led <= 7'b1101_101;//输入0101,显示5
4'b0110: Led <= 7'b1111_101;//输入0110,显示6
4'b0111: Led <= 7'b0000_111;//输入0111,显示7
4'b1100: Led <= 7'b0111_001;//输入1100,显示C
4'b1101: Led <= 7'b1011_110;//输入1101,显示D
4'b1110: Led <= 7'b1111_001;//输入1110,显示E
4'b1111: Led <= 7'b1110_001;//输入1111,显示F
output [2:0] del; //输出3位二进制 del
/*---------------------------------------------------*/
三位数码管实验报告
三位数码管实验——实验日志及报告1. 实验日志实验日期:2020.3.161.1三位数码管实验下载与观察1.1.1操作说明:待完成时序验证、管脚分配后:将下载电缆线与USB接口连接,打开实验板电源开关。
选择Tools->Programmer命令进入下载窗口(尚无实验板);单击Hardware Setup键,进入电缆配置窗口,USB版电缆在Available hardwa items列表选择USB-Blaster;然后选择Add File,选中.sof文件完成配置;选择Add Hardware,进入如图对话框,在Hardware type列表中选择ButeBlaster II项,Port 栏为LPT1,之后Start,Progress栏中出现100%则下载成功。
1.1.2 实验现象:下载成功后,三位数码管显示的都是0,且持续显示,熄灭时间极短,X0、Y7二极管常亮,拨动CLK开关,降低时钟频率,三个数码管依次显示;对三个通道分别进行设置,将配置的拨码开关相应的调整后可以看到数码管显示出相应的数字。
1.2示波器测量位选信号和时钟信号(暂无)2. 实验报告2.1实验目的A.结合三位数码管显示实验,熟悉软件quartusII的使用,熟悉FPGA开发模式;B.熟悉DDA系列数字系统实验平台的使用;C.在DDA—IIIA实验平台上完成三位数码管显示实验的观察与测量,进一步加深通过实验板验证电路的方法;D.了解图形输入、文本输入、层次实际的过程;E.了解图形输入的注意事项和画图技巧;2.2设计2.2.1模4计数器电路图仿真波形:芯片号:cycloneII ep2c5t144c8管脚分配:clk:pin_91、q[1]:pin_118、q[0]:pin_115说明:模4计数器可记录5个脉冲,以实现控制功能。
Quartus II工程设计过程:创建工程文件、电路设计、编译综合、仿真验证、引脚配置、编程下载、硬件验证等。
2019年最新-EDA技术应用项目三 数码管显示译码器-精选文档
四、项目实施——1. QuartusⅡ VHDL设计输入法
编辑输入信号, 设置输入为计 数输入。
四、项目实施——1. QuartusⅡ VHDL设计输入法
执行仿真,观察波形仿真结果
四、项目实施——1. QuartusⅡ VHDL设计输入法 (5)完成器件编程
四、项目实施
2.硬件电路调试及排故
with swd select seg<="11111100" when "0000",
"01100000" when "0001", "11011010" when "0010", "11110010" when "0011", "01100110" when "0100", "10110110" when "0101", "10111110" when "0110", "11100000" when "0111", "11111110" when "1000", "11110110" when "1001", "11101110" when "1010", "00111110" when "1011", "10011100" when "1100", "01111010" when "1101", "10011110" when "1110", "10001110" when "1111", "00000000" when others; end a;
实验一 基于QUARTUSII图形输入电路的设计
实验一基于QUARTUSII图形输入电路的设计一、实验目的1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
二、实验原理3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N 的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。
其真值表如表1-1所示输入输出A B C D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0表1-1 三-八译码器真值表译码器不需要像编码器那样用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
三、实验内容在本实验中,用三个拨动开关来表示三八译码器的三个输入(A、B、C);用八个LED来表示三八译码器的八个输出(D0-D7)。
通过输入不同的值来观察输入的结果与三八译码器的真值表(表1-1)是否一致。
实验箱中的拨动开关与FPGA的接口电路如下图1-1所示,当开关闭合(拨动开关的档位在下方)时其输出为低电平,反之输出高电平。
其电路与FPGA的管脚连接如表1-2所示拨动开关的输出对应FPGA管脚名称图1-1 拨动开关与FPGA接口电路信号名称对应FPGA管脚名信号说明K1 AG12 从K1输出到FPGA的AG12K2 AA8 从K2输出到FPGA的AA8K3 AA10 从K3输出到FPGA的AA10K4 AB8 从K4输出到FPGA的AB8K5 AC5 从K5输出到FPGA的AC5K6 AE3 从K6输出到FPGA的AE3K7 AE4 从K7输出到FPGA的AE4K8 U8 从K8输出到FPGA的U5表1-2 拨动开关与FPGA管脚连接表LED灯与FPGA的接口电路如图1-2所示,当FPGA与其对应的端口为高电平时LED就会发光,反之LED灯灭。
实验4七段数码管译码扫描显示(无源码)
实验4七段数码管译码扫描显示(无源码)实验四七段数码管译码扫描显示一、实验目的:通过对译码和串行扫描电路的设计,理解多位数码管串行扫描输出的工作原理以及七段数码管的译码以及串行扫描输出的设计方法。
二、实验条件:1. 安装WindowsXP系统的PC机;2. 安装QuartusII6.0 EDA软件;过所设计的串行扫描分别显示“1”、“2”、data_control[7..0]:8个分别控制数码管显示的输入信号;led_addr[7..0]:对8个数码管进行串行扫描的输出控制信号;seg7_data[6..0]:驱动7段数码管各显示段的输出信号;首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。
在硬件实现中,要求:1. 用实验平台的8个数码管输出显示(共阴接法),并且用其下方的8个按键分别控制对应数码管的显示与否。
注:采用I/O模式5实现输入控制和输出显示方式。
为了实现数码管的串行扫描,必须把数码管连接成串行控制输出电路,我们可以通过I/O板上的跳线实现此操作,如右图所示,把模式数码管右方的跳线(JP24)向下连接即可。
此跳线必须下置,以实现数码管的串行扫描接法,具体电路如附录所示2. 扫描所用的时钟信号采用实验平台的clock0时钟资源:I/O板上的clock0时钟资源是0.5Hz~20MHz。
暂留特性的要求,频大部分时间内对准,上的跳线可以选择采钟资源(此两类时钟在适配板跳线置右:连接I/O板上的clock0;跳线置左:选择适配板上的20MHz时钟。
四、实验步骤:1. 打开QuartusII软件,建立一个新的工程:1) 单击菜单File\New Project Wizard…2) 输入工程的路径、工程名以及顶层实体名。
3) 单击Next>按钮,出现以下窗口单击Next>继续。
5) 单击Next>,指定第三方工具:这里我们不指定第三方EDA工具,单击Next>后结束工程建立。
实验一
3位数码管显示实验报告计科1403 201408010323 许运一、实验目的利用Quartus Ⅱ软件,采用自上而下或者自下而上的方式设计数码管扫描显示电路,从而熟悉并掌握FPGA的开发模式和设计流程。
二、实验设计方案1、原理说明:多位数码管显示电路由显示字符的段选信号和选通数码管的位选信号控制。
采用动态扫描显示方式,循环地选通单位数码管并显示相应字符。
由于每一位数码管显示间隔短,加上人眼视觉暂留效应及数码管的余晖特性,人眼观察到“同时显示”多位数码管的字符。
2、结构框图:注意左右两边是同步的,这里译码器和多路选择器的输入信号来自同一个模4计数器的输出信号,以达到数码管位选的段选同时变化的效果。
三、实验流程1、设计模4计数器2、设计3选1多路选择器3、设计2_3译码器4、综合利用上面三个模块组合设计数码管扫描显示电路5、完成仿真下载到电路板上测试由于1-3的设计步骤基本相同,这里就以3选1多路选择器为例演示工程的建立。
1)、打开Quartus Ⅱ,其界面如下所示:2)、创建工程点击File—>New Project Wizard,第一个默认界面不用管,直接进入第二个界面:工程文件名要与顶层实体名相同。
在写VHDL时尤其要注意在定义entity时名字必须与工程名一致,否则程序会报错。
下一步需要向工程里添加文件和库,我们现在暂时不需要,直接跳过。
3)、选择器件器件的选择不能乱选,先看看实验板上芯片的型号。
一定要根据实际的型号选择,否则仿真会出错。
如果创建工程时没有选择也没关系,可以在后面的Device里面选择或更改。
下一步也是默认,直接Next。
4)、信息确认点击Finish完成工程的创建,如果有需要更改的,点击Back。
5)、创建设计文件点击File—>New—>VHDL File,单击Ok。
6)、保存文件点击File—>Save As,选择保存在工程文件下,单击保存,默认保存在工程下且同名。
quarter ii 4位数码管显示实验 (2)
贵州大学实验报告
学院:电气工程学院专业:测控技术与仪器班级:测仪131
实
验
原
理流水灯工作流程如上图所示,用逻辑电路控制8个LED灯,始终保持7亮1暗,在脉冲信号CP的推动下循环流动;将灯亮用1表示,灯灭用0表示,可写出流水灯的真值
表;
观察发现,3-8线译码器74LS138的逻辑真值表与其相同,因此采用74LS138作为主控逻辑器件;如果能够通过脉冲信号CP在74LS138的A2、A1、A0地址端产生连续的000、001、010……111→000……的地址信号,在74LS138输出端的8个LED灯即可产
1.通过QuartusII建立一个新项目;
实
验
步
骤
2. 建立项目时选MAXII系列(family)的目标器件(devices)EPM240T100C5
3. 新建图形设计文件,调用相关元件,设计总体电路原理图,并编译通过;
4. 新建波形矢量文件,添加引脚端口并编辑激励波形,保存该文件并执行时序仿真,观察并分析仿真结果。
实验数据。
(完整word版)数电实验实验报告(Quartus)数码管循环显示
实验101、结果:同时显示012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sweep ISPORT(clk,clr:IN STD_LOGIC; --clk输入时钟;clr状态清零a:OUT STD_LOGIC_VECTOR (6 DOWNTO 0); --输出数码管相同段sweep:OUT STD_LOGIC_VECTOR (5 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep;ARCHITECTURE sweep_arch OF sweep ISSIGNAL sweep_arc:STD_LOGIC_VECTOR (5 DOWNTO 0); --声明内部信号(选通控制信号)SIGNAL b:STD_LOGIC_VECTOR (6 DOWNTO 0); --声明内部信号(相同段信号)BEGINPROCESS(sweep_arc)BEGINIF (clk'event and clk='1') THENIF clr='0' THEN --状态清零sweep_arc <="011111" ; b <="0000000";ELSEcase sweep_arc IS --选通控制信号WHEN"011111" => sweep_arc <="111110";WHEN"111110" => sweep_arc <="111101";WHEN"111101" => sweep_arc <="111011";WHEN"111011" => sweep_arc <="110111";WHEN"110111" => sweep_arc <="101111";WHEN"101111" => sweep_arc <="011111";WHEN OTHERS => sweep_arc <="011111";END CASE;CASE sweep_arc IS --相同段信号WHEN"011111" => b <="1011011";WHEN"101111" => b <="0110011";WHEN"110111" => b <="1111001";WHEN"111011" => b <="1101101";WHEN"111101" => b <="0110000";WHEN"111110" => b <="1111110";WHEN OTHERS => b <="0000000";END CASE;END IF;END IF;sweep<=sweep_arc;a<=b;END PROCESS;END;仿真:管脚:2、(1)结果:循环显示:012345—123450—234501—345012—450123—501234—012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sweep2 ISPORT(clk:IN STD_LOGIC; --clk输入时钟sweep2:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --输出数码管相同段a:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep2;ARCHITECTURE arc_sweep2 OF sweep2 ISSIGNAL number:INTEGER RANGE 0 TO 6; --状态声明(6种状态,7种状态值)SIGNAL n:INTEGER RANGE 0 TO 6; --声明数码管(6个管,7个值)SIGNAL flag:INTEGER RANGE 0 TO 50; --同一状态运行次数BEGINPROCESS(clk)BEGINIF (clk'event AND clk='1') THENIF n>5 THENn<=0;ELSE n<=n+1;flag<=flag+1;END IF;IF flag>20 THENflag<=0;number<=number+1;IF number>5 THENnumber<=0;END IF;CASE number ISWHEN 0=> --状态0,输出012345CASE n ISWHEN 0=>sweep2<="011111"; a<="1111110";WHEN 1=>sweep2<="101111"; a<="0110000";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1011011";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 1=> ----状态1,输出123450 CASE n ISWHEN 0=>sweep2<="011111"; a<="0110000";WHEN 1=>sweep2<="101111"; a<="1101101";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1111110";WHEN OTHERS=>sweep2<="111111";WHEN 2=> --状态2,输出234501 CASE n ISWHEN 0=>sweep2<="011111"; a<="1101101";WHEN 1=>sweep2<="101111"; a<="1111001";WHEN 2=>sweep2<="110111"; a<="0110011";WHEN 3=>sweep2<="111011"; a<="1011011";WHEN 4=>sweep2<="111101"; a<="1111110";WHEN 5=>sweep2<="111110"; a<="0110000";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 3=> --状态3,输出345012 CASE n ISWHEN 0=>sweep2<="011111"; a<="1111001";WHEN 1=>sweep2<="101111"; a<="0110011";WHEN 2=>sweep2<="110111"; a<="1011011";WHEN 3=>sweep2<="111011"; a<="1111110";WHEN 4=>sweep2<="111101"; a<="0110000";WHEN 5=>sweep2<="111110"; a<="1101101";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 4=> --状态4,输出450123 CASE n ISWHEN 0=>sweep2<="011111"; a<="0110011";。
附录QuartusII操作
附录EDA软件QuartusII的基本操作QuartusII是一款推出的专门针对Altera公司CPLD/FPGA开发的EDA软件,可完成设计输入、设计综合、布局布线、时序分析、仿真、编程和配置等功能。
本节内容主要介绍利用QuartusII软件完成数字电路仿真,主要操作包括原理图输入、设计编译、设计仿真等操作。
数字电路设计完成以后,一般要对其进行功能仿真,以判断所设计的数字电路是否满足相应的逻辑功能。
以下以图3.5-1所示的3线—8线译码器为例,说明利用QuartusII软件对数字电路仿真方法。
图3.5-1 3线-8线译码器原理图1.建立工作文件夹和设计项目QuartusII软件对任何一个设计都视作一项工程(Project),在设计输入之前,必须为工程文件建立一个文件夹,此文件夹将被QuartusII软件默认为工作库(Work Libray)。
需要注意的是,文件夹不能用中文字符命名,也不要有空格,只能用英文字母和数字命名,长度最好控制在8个字符之内。
针对3线-8线译码器的设计,可在E盘建立一个文件夹,取名为decoder,路径为E:\szdl\decoder。
选择File→New Project Wizard→Next,打开出现如图1所示的新建项目对话框。
2 附录QuartusII操作图1 创建工程FMTER图2 选择目标芯片图中最上面一栏指示工作目录,第二栏为项目名称,可以为任何名字,但推荐顶层设计名作为项目名,第三栏为顶层设计的实体名。
译码器的顶层原理图文件名取为decoder,设置完成后,单击“Next”按钮。
出现一个将设计文件加入工程的对话框,由于还没有设计文件加入,直接单击“Next”按钮,出现如图2所示的选择目标芯片对话框。
由于QuartusII 的操作不涉及具体的可编程器件,因此可直接单击“Next”,出现如图3所示的用于选择仿真器和综合器类型的对话框。
由于本设计采用Quartuss II自带的仿真器和综合器,不需要选择,直接单击“Next”按钮,出现如图4所示的对话框,列出了此项工程的相关设置情况,最后单击“Finish”按钮结束该工程的设置。
数电实验实验报告(Quartus)数码管循环显示(优选.)
最新文件---------------- 仅供参考--------------------已改成-----------word文本 --------------------- 方便更改赠人玫瑰,手留余香。
实验101、结果:同时显示012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sweep ISPORT(clk,clr:IN STD_LOGIC; --clk输入时钟;clr状态清零a:OUT STD_LOGIC_VECTOR (6 DOWNTO 0); --输出数码管相同段sweep:OUT STD_LOGIC_VECTOR (5 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep;ARCHITECTURE sweep_arch OF sweep ISSIGNAL sweep_arc:STD_LOGIC_VECTOR (5 DOWNTO 0); --声明内部信号(选通控制信号) SIGNAL b:STD_LOGIC_VECTOR (6 DOWNTO 0); --声明内部信号(相同段信号)BEGINPROCESS(sweep_arc)BEGINIF (clk'event and clk='1') THENIF clr='0' THEN --状态清零sweep_arc <="011111" ; b <="0000000";ELSEcase sweep_arc IS --选通控制信号 WHEN"011111" => sweep_arc <="111110"; WHEN"111110" => sweep_arc <="111101"; WHEN"111101" => sweep_arc <="111011"; WHEN"111011" => sweep_arc <="110111"; WHEN"110111" => sweep_arc <="101111"; WHEN"101111" => sweep_arc <="011111"; WHEN OTHERS => sweep_arc <="011111"; END CASE;CASE sweep_arc IS --相同段信号 WHEN"011111" => b <="1011011";WHEN"101111" => b <="0110011";WHEN"110111" => b <="1111001";WHEN"111011" => b <="1101101";WHEN"111101" => b <="0110000";WHEN"111110" => b <="1111110";WHEN OTHERS => b <="0000000";END CASE;END IF;END IF;sweep<=sweep_arc;a<=b;END PROCESS;END;仿真:管脚:2、(1)结果:循环显示:012345—123450—234501—345012—450123—501234—012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sweep2 ISPORT(clk:IN STD_LOGIC; --clk输入时钟sweep2:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --输出数码管相同段a:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep2;ARCHITECTURE arc_sweep2 OF sweep2 ISSIGNAL number:INTEGER RANGE 0 TO 6; --状态声明(6种状态,7种状态值)SIGNAL n:INTEGER RANGE 0 TO 6; --声明数码管(6个管,7个值)SIGNAL flag:INTEGER RANGE 0 TO 50; --同一状态运行次数BEGINPROCESS(clk)BEGINIF (clk'event AND clk='1') THENIF n>5 THENn<=0;ELSE n<=n+1;flag<=flag+1;END IF;IF flag>20 THENflag<=0;number<=number+1;END IF;IF number>5 THENnumber<=0;END IF;CASE number ISWHEN 0=> --状态0,输出012345CASE n ISWHEN 0=>sweep2<="011111"; a<="1111110";WHEN 1=>sweep2<="101111"; a<="0110000";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1011011";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 1=> ----状态1,输出123450CASE n ISWHEN 0=>sweep2<="011111"; a<="0110000";WHEN 1=>sweep2<="101111"; a<="1101101";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1111110";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 2=> --状态2,输出234501CASE n ISWHEN 0=>sweep2<="011111"; a<="1101101";WHEN 1=>sweep2<="101111"; a<="1111001";WHEN 2=>sweep2<="110111"; a<="0110011";WHEN 3=>sweep2<="111011"; a<="1011011";WHEN 4=>sweep2<="111101"; a<="1111110";WHEN 5=>sweep2<="111110"; a<="0110000";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 3=> --状态3,输出345012CASE n ISWHEN 0=>sweep2<="011111"; a<="1111001";WHEN 1=>sweep2<="101111"; a<="0110011";WHEN 2=>sweep2<="110111"; a<="1011011";WHEN 3=>sweep2<="111011"; a<="1111110";WHEN 4=>sweep2<="111101"; a<="0110000";WHEN 5=>sweep2<="111110"; a<="1101101";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 4=> --状态4,输出450123CASE n ISWHEN 0=>sweep2<="011111"; a<="0110011";WHEN 1=>sweep2<="101111"; a<="1011011";WHEN 2=>sweep2<="110111"; a<="1111110";WHEN 3=>sweep2<="111011"; a<="0110000";WHEN 4=>sweep2<="111101"; a<="1101101";WHEN 5=>sweep2<="111110"; a<="1111001";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 5=> --状态5,输出501234CASE n ISWHEN 0=>sweep2<="011111"; a<="1011011";WHEN 1=>sweep2<="101111"; a<="1111110";WHEN 2=>sweep2<="110111"; a<="0110000";WHEN 3=>sweep2<="111011"; a<="1101101";WHEN 4=>sweep2<="111101"; a<="1111001";WHEN 5=>sweep2<="111110"; a<="0110011";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN OTHERS=>sweep2<="111111";END CASE;END IF;END PROCESS;END arc_sweep2;仿真:仿真时将循环次数改为1方便观察波形,共6种状态管脚:2、(2)结果:循环显示:012345—12345X—2345XX—345XXX—45XXXX—5XXXXX—XXXXXX—XXXXX0—XXXX01—XXX012—XX0123—X01234—012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sweep3 ISPORT(clk:IN STD_LOGIC; --clk输入时钟sweep3:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --输出数码管相同段a:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep3;ARCHITECTURE arc_sweep3 OF sweep3 ISSIGNAL number:INTEGER RANGE 0 TO 12; --状态声明(12种状态,13种状态值)SIGNAL n:INTEGER RANGE 0 TO 6; --声明数码管(6个管,7个值)SIGNAL flag:INTEGER RANGE 0 TO 50; --同一状态运行次数BEGINPROCESS(clk)BEGINIF clk'event AND clk='1' THENIF n>5 THENn<=0;ELSE n<=n+1;flag<=flag+1;END IF;IF flag>20 THENflag<=0;number<=number+1;END IF;IF number>11 THENnumber<=0;END IF;CASE number ISWHEN 0=> --状态0,输出012345CASE n ISWHEN 0=>sweep3<="011111"; a<="1111110";WHEN 1=>sweep3<="101111"; a<="0110000";WHEN 2=>sweep3<="110111"; a<="1101101";WHEN 3=>sweep3<="111011"; a<="1111001";WHEN 4=>sweep3<="111101"; a<="0110011";WHEN 5=>sweep3<="111110"; a<="1011011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 1=> --状态1,输出12345XCASE n ISWHEN 0=>sweep3<="011111"; a<="0110000";WHEN 1=>sweep3<="101111"; a<="1101101";WHEN 2=>sweep3<="110111"; a<="1101101";WHEN 3=>sweep3<="111011"; a<="1111001";WHEN 4=>sweep3<="111101"; a<="0110011";WHEN 5=>sweep3<="111111"; a<="1111110";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 2=> --状态2,输出2345XXCASE n ISWHEN 0=>sweep3<="011111"; a<="1101101";WHEN 1=>sweep3<="101111"; a<="1111001";WHEN 2=>sweep3<="110111"; a<="0110011";WHEN 3=>sweep3<="111011"; a<="1011011";WHEN 4=>sweep3<="111111"; a<="1111110";WHEN 5=>sweep3<="111111"; a<="0110000";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 3=> --状态3,输出345XXXCASE n ISWHEN 0=>sweep3<="011111"; a<="1111001";WHEN 1=>sweep3<="101111"; a<="0110011";WHEN 2=>sweep3<="110111"; a<="1011011";WHEN 3=>sweep3<="111111"; a<="1111110";WHEN 4=>sweep3<="111111"; a<="0110000";WHEN 5=>sweep3<="111111"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 4=> --状态4,输出45XXXXCASE n ISWHEN 0=>sweep3<="011111"; a<="0110011";WHEN 1=>sweep3<="101111"; a<="1011011";WHEN 2=>sweep3<="111111"; a<="1111110";WHEN 3=>sweep3<="111111"; a<="0110000";WHEN 4=>sweep3<="111111"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 5=> --状态5,输出5XXXXXCASE n ISWHEN 0=>sweep3<="011111"; a<="1011011";WHEN 1=>sweep3<="111111"; a<="1111110";WHEN 2=>sweep3<="111111"; a<="0110000";WHEN 3=>sweep3<="111111"; a<="1101101";WHEN 4=>sweep3<="111111"; a<="1111001";WHEN 5=>sweep3<="111111"; a<="0110011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 6=> --状态6,输出XXXXXXCASE n ISWHEN 0=>sweep3<="111111"; a<="1111110";WHEN 1=>sweep3<="111111"; a<="0110000";WHEN 2=>sweep3<="111111"; a<="1101101";WHEN 3=>sweep3<="111111"; a<="1111001";WHEN 4=>sweep3<="111111"; a<="0110011";WHEN 5=>sweep3<="111111"; a<="1011011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 7=> --状态7,输出XXXXX0CASE n ISWHEN 0=>sweep3<="111111"; a<="0110000";WHEN 1=>sweep3<="111111"; a<="1101101";WHEN 3=>sweep3<="111111"; a<="1111001";WHEN 4=>sweep3<="111111"; a<="0110011";WHEN 5=>sweep3<="111110"; a<="1111110";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 8=> --状态8,输出XXXX01CASE n ISWHEN 0=>sweep3<="111111"; a<="1101101";WHEN 1=>sweep3<="111111"; a<="1111001";WHEN 2=>sweep3<="111111"; a<="0110011";WHEN 3=>sweep3<="111111"; a<="1011011";WHEN 4=>sweep3<="111101"; a<="1111110";WHEN 5=>sweep3<="111110"; a<="0110000";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 9=> --状态9,输出XXX012CASE n ISWHEN 0=>sweep3<="111111"; a<="1111001";WHEN 1=>sweep3<="111111"; a<="0110011";WHEN 2=>sweep3<="111111"; a<="1011011";WHEN 3=>sweep3<="111011"; a<="1111110";WHEN 4=>sweep3<="111101"; a<="0110000";WHEN 5=>sweep3<="111110"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 10=> --状态10,输出XX0123CASE n ISWHEN 0=>sweep3<="111111"; a<="0110011";WHEN 1=>sweep3<="111111"; a<="1011011";WHEN 2=>sweep3<="110111"; a<="1111110";WHEN 3=>sweep3<="111011"; a<="0110000";WHEN 4=>sweep3<="111101"; a<="1101101";WHEN 5=>sweep3<="111110"; a<="1111001";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 11=> --状态11,输出X01234CASE n ISWHEN 0=>sweep3<="111111"; a<="1011011";WHEN 1=>sweep3<="101111"; a<="1111110";WHEN 2=>sweep3<="110111"; a<="0110000";WHEN 3=>sweep3<="111011"; a<="1101101";WHEN 4=>sweep3<="111101"; a<="1111001";WHEN 5=>sweep3<="111110"; a<="0110011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN OTHERS=>sweep3<="111111";END CASE;--END IF;END IF;END PROCESS;END arc_sweep3;仿真:仿真时将循环次数改为1方便观察波形,共12种状态管脚:最新文件---------------- 仅供参考--------------------已改成-----------word文本 --------------------- 方便更改赠人玫瑰,手留余香。
EDA数码管的显示整个流程实验报告
EDA 第一次实验报告实验目的:利用QuartusⅡ软件,采用自上而下或自下而上的模块化层次设计数码管扫描显示电路,通过仿真波形及硬件实验平台验证设计,从而熟悉QuartusⅡ的数字系统设计流程以及FPGA开发模式。
一、实验设计方案1.原理说明:几个数码管在同一时间进行显示利用人眼的视觉暂留效应,把多个数码管按一定顺序(从左至右或从右至左)循环进行点亮,当点亮的频率足够高时,我们可以看到全部同时显示(点亮)。
因此,我们只要给数码管驱动电路一个足够高的扫描工作频率,就可以实现几个数码管同时点亮。
而用来产生这个扫描频率的驱动电路,可以通过BCD七段译码器的输入数据切换电路,通过计数器的输出来控制几个多路数据选择器电路的实现,只要计数频率足够高,就可以实现我们的要求。
2.结构框图:其中,3选1多路选择器以及2-3译码器的输入信号是由模4计数器统一输出控制,以达到数码管的位选以及段选同时变化的效果。
二、实验流程:1、模4计数器设计并进行仿真,下载到电路板上测试2、3选1多路选择器设计3、2-3译码器设计并进行仿真4、综合利用模4计数器,3选1多路选择器以及2-3译码器完成数码管扫描显示电路的设计并进行仿真,下载到电路板上测试模4计数器与2-3译码器大同小异。
所以,我就以2-3译码器为例简单的讲述一下演示工程的创建过程。
3选1多路选择器:1)打开Quartus,创建工程,点击File->New Project WizardEDA 实验报告王丹计科一班 2注意工程文件名一定要和顶层实体名一致,否则到后面编译的时候就有可能会报错并且还很难找出错误原因。
2)点击Next,下一步是添加工程所需子模块设计源文件及设置用户库,我们目前不需要,直接单击Next。
3)选择目标器件我在实验室里截了图,其实可以看出,上面器件的选取和电板上的芯片型号相同。
因此,一定要根据实际情况对器件进行选取,否则,仿真时就会出现问题。
EDA实验报告——计数器
模323计数器设计实验报告一、实验内容在QuartusII平台上,利用VHDL代码实现学号323计数器的设计,并在三位数码管显示出来。
二、实验步骤与过程分析1、建立工程。
打开Quartus II软件平台,点击File---〉new project wizard建立一个工程xuehao_323,工程所在文件夹名字为xuehao_323,设置顶层实体名称为xuehao_323,点击next设置device,按照实验箱上FPGA的芯片名更改编程芯片的设置。
分析:选择的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。
2、添加VHDL文件。
在所在工程添加文件cnt10.vhd(十进制计数器),cnt_xuehao.vhd(323进制计数器),scan_led3_vhd.vhd(三位数码管显示),exp_cnt_xuehao323_7seg.vhd(数码管显示323三位学号计数器)四个文件。
这里通过老师给出的代码进行修改且理解:cnt10.vhd如下:分析:这是十进制计数器的VHDL代码设计,因为十进制有十个状态,所以输入数据和输出状态需要四位宽,其中输入端口有aclr 清零端,clock时钟信号,cnt_en使能端,data[3..0]数据输入,sload装载使能,当aclr为高电平有效时,输出清零,从0开始,计数为时钟信号clock的上升沿到来时且使能端cnt_en 为高电平有效时自动加1(sload为低电平时),如果装载使能sload为高电平有效时,则装载数据data[3..0],输出端口有两个,分别为cout(当q[3..0]为9时输出为高电平),q[3..0]变化为0—9循环变化。
cnt_xuehao.vhd分析如下:这里是调用cnt_10十进制计数器的元件例化来设计323(学号)计数器。
输入端口aclr(高电平有效清零端),clock(时钟信号上升沿有效),cnt_en(使能端),sload(装载时能,高电平有效时装在输入的数据),datab[3..0],datas[3..0],datag[3..0](三位学号的数据输入端,每位变化相当于一个十进制计数器);输出端口qb[3..0](百位)qs[3..0](十位)qg [3..0](个位)变化为qb qs qg=000到322共323中状态,当等于322时,输出cout为高电平指示达到一个循环。
clr_quartus使用手册(基于Quartus II 7.2 的数字电路设计操作过程图解)
基于Quartus II 7.2 的数字电路设计操作过程图解一.Quartus II 7.2 启动◆方法一、直接双击桌面上的图标,可以打开Quartus II 7.2 软件;◆方法二、执行:【开始】→【程序】→【Altera】→【Quartus II 7.2】→【Quartus II 7.2 TalkBackInstall】菜单命令,可以打开软件。
◆启动软件后,若没有连接到Internet互联网,会出现如下图所示的提示,提示你没有连接到Altera的官方网站,将无法获得更新的资源。
点击〖确定〗继续,因为这不影响软件的正常使用。
◆若你的电脑已经正常连接到Internet互联网,则在打开软件时就不会出现以上的提示,并且可以通过软件界面右下方的两个图标:,直接连接到Altera公司的官方网站,以便获取更多的信息和资源。
二.Quartus II 7.2软件界面Quartus II 7.2软件的默认启动界面如下图所示,由标题栏、菜单栏、常用工具栏、资源管理窗口、程序编译或仿真运行状态的显示窗口、程序编译或仿真的结果显示窗口和工程编辑工作区组成。
三.Quartus II 7.2软件使用1. 新建项目工程使用QuartusII7.2设计一个数字逻辑电路,并用时序波形图对电路的功能进行仿真,同时还可以将设计正确的电路下载到可编程的逻辑器件(CPLD、FPGA)中。
因软件在完成整个设计、编译、仿真和下载等这些工作过程中,会有很多相关的文件产生,为了便于管理这些设计文件,我们在设计电路之前,先要建立一个项目工程(New Project),并设置好这个工程能正常工作的相关条件和环境。
建立工程的方法和步骤如下:(1)先建一个文件夹。
就在电脑本地硬盘找个地方建一个用于保存下一步工作中要产生的工程项目的文件夹,注意:文件夹的命名及其保存的路径中不能有中文字符。
(2)再开始建立新项目工程,方法如右图点击:【File】菜单,选择下拉列表中的【New Project Wizard...】命令,打开建立新项目工程的向导对话框。
利用QuartusⅡ完成三位数码管显示电路
实验日期:2013 年10 月16 日一、实验目的:熟练使用QuartusⅡ软件,并利用QuartusⅡ完成三位数码管显示电路的逻辑设计,通过仿真波形及硬件实验平台验证设计,并记录结果,完成报告。
二、实验内容:用逻辑图和所学知识分组进行数码管扫描电路的模块化设计,通过波形仿真及硬件实验箱验证设计,并记录结果,完成报告。
三、实验原理:实验原理:采用基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。
顶层电路的连接:实验步骤:1、绘制逻辑图。
打开QuartusII软件平台,点击File中得New建立一个文件。
编写的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。
2、按照实验箱上FPGA的芯片名更改编程芯片的设置。
操作是点击Assign/Device,选取芯片的类型。
3、编译与调试。
确定逻辑图文件为当前工程文件,点击Complier进行文件编译。
编译结果有错误或警告,则将要调试修改直至文件编译成功。
4、波形仿真及验证。
在编译成功后,点击Waveform开始设计波形。
5、时序仿真。
(具体过程,操作细节以及实验过程截图见下面具体操作,都有说明。
)6、完成各模块的设计后,用图形法实现顶层设计,然后进行编译,仿真,和FPGA芯片编程及下载验证。
四、实验过程:一)、模4计数器的设计1、编译过程(可先绘制逻辑图再建工程,也可先建工程再建文件)a)绘制逻辑图。
打开QuartusII软件平台,点击file中的New新建一个文件。
弹出一个窗口,选择Block Diagram选项;新建文件,然后绘制实验要用到的逻辑图,双击空白处,选择要用到的器件并用适当的线把各元件连接好并进行命名,绘制的模4计数器的逻辑图如下:接着保存文件,点击File/Save as,接着建一个工程,并保存。
北京科技大学数电实验三 Quartus II显示译码电路及触发器设计计数器
北京科技大学实验报告学院:高等工程师学院专业:自动化(卓越计划)班级:自E181 姓名:杨威学号: 41818074 实验日期:2020 年5月20日一、实验名称:显示译码电路1、实验内容与要求:(1)测试显示译码器74LS248的基本功能使LTN=0,其余为任意状态,这时数码管各段全部点亮,否则数码管是坏的。
再将BIN/RBON接地,数码管全灭,说明数码管是好的。
D、C、B、A分别接拨档逻辑开关,LTN、RBIN和BIN/RBON分别接逻辑高电平。
在不同输入状态下,将从数码管观察到的字形填入功能表中。
使LTN=1,BIN/RBON接一个发光二极管,在RBIN为1和0的情况,使拨档开关的输出为0000,观察灭零功能。
(2)用74LS154实现16进制显示译码器普通显示译码器能够实现10进制数的译码显示,如果要实现16进制数的译码显示需要自行设计74LS154的引脚分布:功能表:2、实验相关知识与原理:(1)数码显示器LC5011-11就是一种共阴极数码显示器。
它的引脚分布如下图所示,X为共阴极,DP为小数点。
其内部是八段发光二极管的负极连在一起的电路。
当在它的a、b、c、∙∙∙、g、DP加上正向电压时,各段发光二极管就点亮。
共阳极数码显示器则相反。
(2)显示译码器74LS248是BCD码到七段码的显示译码器,它可以直接驱动共阴极数码管。
引脚图:功能表:3、显示译码器74248的基本功能验证:(1)原理图截图(2)实验仿真仿真波形如下显示译码器74248的功能验证表格见下一页4、用74154实现十六进制显示译码器: (1)实验设计设i m 为译码器的对应的O0N-O15N 对应的输出,OA-OG 为对应七段数码管的每一根管的输入,因此根据16进制显示译码器的功能表中OA-OG 与D 、C 、B 、A 之间的关系,写出如下各逻辑表达式:14111356111214152121415147101513457912371301712OA mm m m OB m m m m m m OC m m m m OD m m m m m OE m m m m m m OF m m m m m OG m m m m =⋅⋅⋅=⋅⋅⋅⋅⋅=⋅⋅⋅=⋅⋅⋅⋅=⋅⋅⋅⋅⋅=⋅⋅⋅⋅=⋅⋅⋅(2)设计原理图截图(3)实验仿真仿真波形:仿真结果表:5、实验思考题:74248是4线-七段译码器,输出刚好对应共阴数码管的七段。
动态扫描实验报告总结(3篇)
第1篇一、实验背景随着科技的不断发展,数码管在电子设备中的应用越来越广泛。
动态扫描数码管作为一种高效、实用的显示方式,在电子设备中扮演着重要角色。
本实验旨在通过设计并实现动态扫描数码管电路,深入了解动态扫描原理,掌握动态扫描数码管的设计与实现方法。
二、实验目的1. 理解动态扫描数码管的工作原理。
2. 掌握动态扫描数码管电路的设计方法。
3. 学会使用Verilog HDL进行层次化设计电路。
4. 通过仿真验证动态扫描数码管电路的正确性。
三、实验内容1. 动态扫描数码管原理介绍动态扫描数码管由多个七段数码管组成,通过位选线和段选线分别控制数码管的位和段。
动态扫描数码管显示时,先选中某个数码管,然后显示该数码管的段码,随后快速切换到下一个数码管,重复此过程,使多个数码管轮流显示,从而实现多位数码管的显示。
2. 动态扫描数码管电路设计本实验采用Verilog HDL进行动态扫描数码管电路的设计。
主要设计内容包括:(1)位选信号生成模块:生成动态扫描数码管的位选信号,控制数码管的显示顺序。
(2)段选信号生成模块:生成动态扫描数码管的段选信号,控制数码管的显示内容。
(3)七段数码管驱动模块:将段选信号和位选信号转换为数码管的段码,驱动数码管显示。
3. 动态扫描数码管电路仿真使用Verilog HDL进行动态扫描数码管电路的仿真,验证电路的正确性。
主要仿真内容包括:(1)位选信号和段选信号的波形分析。
(2)数码管显示内容的波形分析。
(3)动态扫描数码管电路的整体性能分析。
四、实验结果与分析1. 仿真结果分析通过仿真实验,验证了动态扫描数码管电路的正确性。
位选信号和段选信号波形正常,数码管显示内容正确,动态扫描数码管电路整体性能良好。
2. 实验结果分析(1)动态扫描数码管电路设计过程中,位选信号和段选信号生成模块是关键部分。
位选信号需要满足轮流显示的要求,段选信号需要满足数码管显示内容的要求。
(2)动态扫描数码管电路在实现多位数码管显示时,可以有效减少引脚数量,降低硬件成本。
Quartus原理图输入法设计三人表决器实验
Quartus2原理图输入法(上机实训)原理图输入法设计三人表决器实验一:Quartus II 7.2 启动___________•方法一、直接双击桌聞上的图标Lawd,可以打开Quartus IT 7.2 :•方法二、执行:【开始【程序】一(Alteral - [Quartus II 7. 2] - (Quartus II 7. 2 TalkBack Install]菜单命令,可N打开软件°•启动软件后,甘你的电脑没有Internet互联网,会岀现提示,提示你没有连接到Altera的官方网站*将无法获得更新的资潞f点击瞪确定d继续,因为这不影响软件的正常使用・二Quartus II 7.2 软件界面"Lx -gggp isfcirn 4詰4仝:- • ”ZL」J 土Quartus II 7.2软件的狀认启动界面如下图所示,由标题栏、菜单栏、常用工具栏、整源管理窗口* 程序编译或仿真运行状态的显示窗口、程序編译或仿頁的结果显示窗口和工程編辑T作区组成・三:Quartus II 7.2软件使用:_. ^I C E SC:"' S■--仕n_1.新建项目工程使用Quartusl门.2设计一个数字逻辑电路,并用时序波形图对电路的功能进行仿真,同时还可以将设计正确的电路下载到可编程的逻辑器件(CTLD、FPGA)中.因软件在完成密个设计、编译.仿真和下载等这些丁.作过程中,会有很多相芸的文件产生,刃了便于管理这些设计文件・我们在设计电踣Zllih先骡建立一个项口工程(NewProject)・幷设瓷好这个工稗能正常工作的相关条件和坏境・建立工程的方法和步骤如下:(1)先建一个文件夹。
就在电脑本地硬盘找个地方建一个用于保存下一步工作中要产生的工程项目的文件夹.注意,文件夹的命名及其保存的路径中不能育中文字符.(2)再开始建立新项目工程・方法如右图点击:[File]菜单,选择下拉列衰中的[New Project Wizard...J 令・打开建立新项目工程的向导对话框。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验日期:2013 年10 月16 日学号:姓名:
实验名称:利用QuartusⅡ完成三位数码管显示电
路
总分:
一、实验目的:
熟练使用QuartusⅡ软件,并利用QuartusⅡ完成三位数码管显示电路的逻辑设计,通过仿真波形及硬件实验平台验证设计,并记录结果,完成报告。
二、实验内容:
用逻辑图和所学知识分组进行数码管扫描电路的模块化设计,通过波形仿真及硬件实验箱验证设计,并记录结果,完成报告。
三、实验原理:
实验原理:
采用基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。
顶层电路的连接:
实验步骤:
1、绘制逻辑图。
打开QuartusII软件平台,点击File中得New建立一个文件。
编写的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。
2、按照实验箱上FPGA的芯片名更改编程芯片的设置。
操作是点击Assign/Device,选取芯片的类型。
3、编译与调试。
确定逻辑图文件为当前工程文件,点击Complier进行文件编译。
编译结果有错误或警告,则将要调试修改直至文件编译成功。
4、波形仿真及验证。
在编译成功后,点击Waveform开始设计波形。
5、时序仿真。
(具体过程,操作细节以及实验过程截图见下面具体操作,都有说明。
)
6、完成各模块的设计后,用图形法实现顶层设计,然后进行编译,仿真,和FPGA 芯片编程及下载验证。
四、实验过程:
一)、模4计数器的设计
1、编译过程(可先绘制逻辑图再建工程,也可先建工程再建文件)
a)绘制逻辑图。
打开QuartusII软件平台,点击file中的New新建一个文件。
弹出一个窗口,选择Block Diagram选项;
新建文件,然后绘制实验要用到的逻辑图,双击空白处,选择要用到的器件并用适当的线把各元件连接好并进行命名,绘制的模4计数器的逻辑图如下:
接着保存文件,点击File/Save as,接着建一个工程,并保存。
b)按照实验箱上FPGA的芯片名更改芯片的设置,选取芯片类型。
设置如下图所示:
c)工程建好后,进行编译和调试。
点击Processing->Compilation Tool,进行文件全编译,全编译的窗口如下:
2、波形仿真
a)波形仿真过程。
点击file->new,选择Vector Waveform File,新建一个波形仿真文件,然后在空白处点击右键,选择“Insert Node or Bus”,出现一个对话框,进
行添加节点,过程如下图所示:
然后输入时钟激励信号,并进行参数设置,两个重要的参数:End time结束时间和Grid size网格大小。
点击Edit->Value->Clock,出现一个对话框设置时钟激励周期,相位以及其他参数,点击OK,显示波形图如下:
接着保存波形文件,然后进行仿真。
在仿真之前要先生成功能仿真表,首先要先设置仿真模式。
然后点击菜单项Processing->Generate Function Simulation Netlist,产生功能仿真所需要的网表。
接着就能进行仿真操作了。
波形仿真:打开processing 仿真工具,如下图
出现仿真设置对话框,然后分别开始进行时序仿真和功能仿真。
这是功能仿真即波形仿真。
3、完成仿真之后就进行Programming芯片编程:
a)芯片编程过程:芯片类型的选定见实验过程第一步,在新建项目是已经选定。
选择Assignments—>Pins,设定引脚如下图:
然后选择Tools->programmer,点击start进行下载,下载前再进行一次全编译,则程序已被下载到实验箱。
整个实验操作到此基本结束。
此后便是用实验箱验证该实验的结果。
结论:根据实验分析,可清楚的看到实验箱上的led灯有规律的亮:00,01,10,11。
总结:以上便是模4计数器的设计过程,接着以相似的步骤可进行3选1多路选择器和2-3译码器的设计。
二者的逻辑功能如下:
二)、3选1多路选择器的VHDL代码:
library IEEE;
use IEEE.std_logic_1164.all;
entity mux4_3_1 is
port(d0,d1,d2:in STD_LOGIC_VECTOR(3 downto 0);
sel:in STD_LOGIC_VECTOR(1 downto 0);
dout:out STD_LOGIC_VECTOR(3 downto 0));
end mux4_3_1;
architecture rtl of mux4_3_1 is
begin
dout<= d0 when sel="00" else
d1 when sel="01" else
d2;
end rtl;
三)、2-3译码器的设计:
逻辑框图如下:
四)完成以上的设计后,接着可进行模块化层次设计:
1)图形法实现顶层设计
(1)创建工程文件。
新建工程所在的文件夹名称为scan_led3,工程名称为scan_led3,顶层实体名称为scan_led3,选择的目标器件为EPF10K20TC144-3。
(2)创建子模块的符号文件。
将设计源文件counter4.bdf、mux4_3_1.vhd、decoder2_3.bdf复制到新工程所在的文件夹中。
打开counter4.bdf,选择菜单File、Creat/Update、Creat Symbol File for Current File命令,弹出对话框,然后保存文件名counter4.bsf,完成该文件的符号创建,然后分别打开另外两个子文件,完成符号创建。
(3)建立顶层bdf文件,放置元件。
在空白原理图编辑窗口双击,弹出symbol对话框,在Libraries栏中单击Project 目录,分别选取各设计好的元件,单击OK按钮完成放置。
(4)完成顶层电路的连接,如下图所示:
(5)管脚分配、编译并除错。
DDA-I型实验平台的管脚分配情况参考如下:
clk:125
din2[3..0]:72、73、78、79
din1[3..0]:82、83、92、95
din0[3..0]:86、87、88、89
bsg[2..0]:100、101、102
qa~qg:51、49、48、47、46、44、43
(6)仿真验证
仿真方法参照前面实例所述,仿真图如下所示,电路能实现动态扫描3位数码管循环显
示1、2、3
(7)编程配置及硬件测试
按照前面实例中所述方法对该设计进行编程配置下载,实验平台上可观察3位数码管的正确稳定的显示。
五、功能验证
波形图(模4计数器与顶层设计各有一个):
仿真结论:波形仿真逻辑功能验证正确。
六、硬件验证
芯片分配:FLEX10K-EPF10K20TI144-4(或FLEX10K-EPF10K20TC144-3)
管脚分配:DDA-I型实验平台的管脚分配情况参考如下:
clk:125
din2[3..0]:72、73、78、79
din1[3..0]:82、83、92、95
din0[3..0]:86、87、88、89
bsg[2..0]:100、101、102
qa~qg:51、49、48、47、46、44、43
硬件验证结论:
1)连到总线上的器件都必须是三态输出,且任何时候最多有一个器件向总线输出数据,其余器件输出处于高阻状态,绝对避免总线上发生数据冲突。
七、实验日志
2013年10月08日
Q1. 出现警告:找不到节点q[0],q[1]
A1. 在画模4计数器的电路图时,没有选中线条就开始命名,导致节点丢失
2013年10 月10日
Q1. 图形输入法时有哪些方法提高连线效率?
A1. 对于输入和输出的同一组线和接口取个名字并编号。
2013年10 月12日
Q1. 图形输入法与硬件描述语言法优缺点是什么?
A1. 图形输入法:(优点)能直接的用元件连接电路图,容易理解和思考,直观,连线简洁方便。
(缺点)连线容易出错,器件容易搞混。
硬件描述语言:(优点)逻辑性强,对实现电路器件和连线较多的逻辑电路较方便
(缺点)设计代码需要较强的逻辑能力,消耗较多时间用于思考
2013年10 月16日
A2. 实验总结
通过此次实验初步了解了模块层次设计,并成功设计了3位数码管扫描电路。