EDA实验七波形图
- 格式:doc
- 大小:274.50 KB
- 文档页数:2
河北科技大学实验报告2013级电信专业132 班学号130701213 2016年6月7日姓名田继辉同组人指导教师于国庆实验名称实验三七段译码显示成绩实验类型设计型批阅教师一、实验目的(1)掌握VHDL语言的行为描述设计时序电路。
(2)掌握FPGA动态扫描显示电路设计方法。
(3)熟悉进程(process)和顺序语句的应用。
二、实验原理:用4个开关作为加法器的一组输入变量,共4组输入变量;对每组变量进行译码,变换成0~F标准段码,段码中“1”表示段亮,“0”表示段灭。
一位时钟输入作为扫描显示位扫时钟,四位位扫输出,依次输出高电平。
8位段码输出,根据位选状态选择输出四组输入变量的相应译码结果。
四组输入采用试验箱K1~K16,时钟输入选择试验箱CP1或CP2;试验箱LED显示选择动态显示方式(CZ1开关ST选择OFF),段码、位码分别扫描输出,某个管的位码有效期间,将其对应的段码输出,各位码依次有效,实现循环扫描显示,将输入的16位二进制数,每4位一组,分别显示到4个数码管上(0~F)。
三、实验内容及步骤1.打开MUXPLUS II VHDL编辑器,完成七段译码显示的设计。
包括VHDL程序输入、编译、综合。
实验程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alpher ISPORT(1 / 6clk : IN STD_LOGIC;choice : OUT STD_LOGIC_VECTOR(7 downto 0);data : OUT STD_LOGIC_VECTOR(7 downto 0)); END alpher;ARCHITECTURE a OF alpher ISSIGNAL count : STD_LOGIC_VECTOR(3 downto 0); SIGNAL temp : STD_LOGIC_VECTOR(3 downto 0);BEGINchoice<="10000000";clk1_label:PROCESS (clk)BEGINIF clk'event and clk='1' THENcount<=count+1;END IF;END PROCESS clk1_label;WITH count selectdata <= "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 OTHERS;END a;2、建立仿真波形文件,使用MAXPLUS II Simulator功能进行功能仿真。
EDA实验报告班级:姓名:目录实验一:七段数码显示译码器设计 (1)摘要 (1)实验原理 (1)实验方案及仿真 (1)引脚下载 (2)实验结果与分析 (3)附录 (3)实验二:序列检测器设计 (6)摘要 (6)实验原理 (6)实现方案及仿真 (6)引脚下载 (7)实验结果与分析 (8)实验三:数控分频器的设计 (11)摘要 (11)实验原理 (11)方案的实现与仿真 (11)引脚下载 (12)实验结果及总结 (12)附录 (12)实验四:正弦信号发生器 (14)摘要 (14)实验原理 (14)实现方案与仿真 (14)嵌入式逻辑分析及管脚下载 (16)实验结果与分析 (17)附录 (18)实验一:七段数码显示译码器设计摘要:七段译码器是一种简单的组合电路,利用QuartusII的VHDL语言十分方便的设计出七段数码显示译码器。
将其生成原理图,再与四位二进制计数器组合而成的一个用数码管显示的十六位计数器。
整个设计过程完整的学习了QuartusII的整个设计流程。
实验原理:七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA\CPLD中来实现。
本实验作为7段译码器,输出信号LED7S的7位分别是g、f、e、d、c、b、a,高位在左,低位在右。
例如当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别为1、1、0、1、1、1、0、1。
接有高电平段发亮,于是数码管显示“5”。
实验方案及仿真:I、七段数码显示管的设计实现利用VHDL描述语言进行FPGA上的编译实现七段数码显示译码器的设计。
运行QuartusII在G:\QuartusII\LED7S\下新建一个工程文件。
新建一个vhdl语言编译文件,编写七段数码显示管的程序见附录1-1。
1引言简易多功能信号发生器是信号发生器的一种,在生产实践和科研领域中有着广泛的应用。
信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。
可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。
信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。
它可以产生多种波形信号 , 如正弦波 ,三角波和方波等 , 因而广泛用于通信、雷达、导航、宇航等领域。
在本设计中它能够产生多种波形,如正弦波 , 三角波和方波等,并能实现对各种波频率和幅度的改变。
正因为其在生活中应用的重要性,人们它做了大量的研究,总结出了许多实现方式。
可以基于 FPGA 、 VHDL、单片机、 DOS技能、数字电路等多种方法实现。
本设计是采用 VHDL来实现的简易多功能信号发生器。
它能产生正弦波, 三角波和方波。
且对各种波形的要求如下:(1)设计任意信号发生器,使之能够生成正弦波、三角波和方波;( 2)电路的外部频率为 40MHz,要求信号发生器可产生 0-1KHz、 1KHz~10KHz、10KHz~1MHz三档频率的信号;(3)要求具有波形选择和频率选择的功能;(4)在同一频率档内,可实现频率的加减;(5)要求显示波形的同时能够进行频率的调节;( 6)要求能够显示波形: A——正弦波; B——三角波; C——方波;(7)要求能够显示频率值;(8)可用示波器进行波形的观测。
2设计流程2.1设计思想及流程图本次课程设计按模块式实现,据任务书要求,设计总共分三大步骤完成:(1)产生波形(三种波形:方波、三角波、正弦波)信号;(2)频率控制;(3)显示频率值。
利用 VHDL编程,依据基本数字电路模块原理进行整合。
系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。
频率控制模块有多个可选频率,最终送至脉冲发生模块输出脉冲信号,同时将信号的频率输出至数码管显示当前信号的频率值,达到设计课题所要求的输出波形频率可调功能。
EDA实验报告-实验2-数码管扫描显⽰电路暨南⼤学本科实验报告专⽤纸课程名称 EDA 实验成绩评定实验项⽬名称数码管扫描显⽰电路指导教师郭江陵实验项⽬编号 02 实验项⽬类型验证实验地点 B305 学院电⽓信息学院系专业物联⽹⼯程组号: A6⼀、实验前准备本实验例⼦使⽤独⽴扩展下载板EP1K10_30_50_100QC208(芯⽚为EP1K100QC208)。
EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3.3V ;EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V ”应短接,其余VCCIO 均断开;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为 2.5V ;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3.3V 。
请参考前⾯第⼆章中关于“电源模块”的说明。
⼆、实验⽬的1、了解时序电路设计。
2、制作⼀个数码管显⽰的7段译码电路,以备以后调⽤。
三、实验原理在电⼦电路显⽰部分⾥,发光⼆极管(LED )、七段显⽰数码管、液晶显⽰(LCD )均是⼗分常见的⼈机接⼝电路。
通常点亮⼀个LED 所需的电流在5~20mA 之间,电流愈⼤,LED 的亮度也⾼,相对的使⽤寿命也愈短。
若以10mA 导通电流来估算⼀个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。
七段显⽰数码管分为共阳、共阴⼆种极性。
它们等效成⼋个LED 相连电路。
共阴极七段显⽰器的LED 位置定义和等效电路共阴极七段显⽰码⼗六进制转换表四、实验内容⽤拨码开关产⽣8421BCD 码,CPLD 器件产⽣译码及扫描电路,把BCD 码显⽰在LED 数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求学习在MAX+PLUS II 中使⽤VHDL 设计功能模块,并将所⽣成的功能模块转换成MAX+PLUS II 原理图的符号库,以便在使⽤原理图时调⽤该库。
计科二班 03号樊艳波实验三:存储器实验实验设备1、PC机一台2、数字系统实验箱3、QuartusII配套软件实验预习:计算机的存储器是存储各种二进制信息的记忆装置,计算机的内存是计算机不可缺少的部件,用来存放计算机正在执行或将要执行的程序和数据等信息;本次实验主要是学习存储器的组成、分类、容量扩展等内容,学习了Lpm_ram_io定制方法,并设计了存储器的数据通路和附加显示电路,对存储器的数据传送、存储和读取进行验证,预习中主要遇到了一下问题1、存储器实验原理框图的理解及各个部分芯片的选择2、画图法设计时地址计数器PC的设计3、如何修改电路使其能连续读取连续地址单元中的内容实验的结构框图以及各部分的芯片选择(可以实现连读功能)实验中几个主要部件的设计如下:程序计数器PC的设计:通过两片74161级联而成,其电路图如下设计这部分时的主要问题在于级联信号的生成;一开始误以为装载时需要使能EN有效,所以在装载和清零上卡了很长时间,后来通过对时钟信号的控制虽然解决了这个问题,但是电路比较麻烦;通过与同学讨论才发觉装载时不需要EN 信号有效,只需要将第四位的进位输出rco当做高四位的使能输入即可实现级联Lpm_ram_io的定制及相关参数如下附加电路的设计:这里将K值,PC中的地址,以及总线上的数据都显示到数码管上,K的生成有两片16进制的计数器级联而成,这部分只需要根据实验2的附加电路坐一些改动即可,没有遇到什么问题,其顶层图如下波形仿真:波形仿真参数设置仿真参数设置:Grid size:100.0ns End time:10.0us验证功能:PC的装载、清零、+1功能;存储器的读写功能,(从.mif文件中读数据);以及连续读数据Initial_file.mif中的部分数据如下波形仿真结果及分析思考题1、如何将两片512*4bit的RAM构成容量为512*8bit的存储体?2、如何将两片512*4bit的RAM构成容量为1024*4bit的存储体?3、如何修改电路使其能读出存入连续地址单元中的数据?答:只需要将图中的存储地址显示由AR输出端移到PC输出端,同时PC输出端不连接到总线上即可,见结构框图4、如何将原理图输入的逻辑电路转换成HDL语言描述的器件?答:通过File->Create/Update->Create HDL Design File For Current File实验日志:1、本次试验主要学习了有关存储器的一些知识,设计了一个八位存储器和相关的数据通路,模拟了存储器的读写操作;实验的难点在于数据通路的设计,本实验我采用VHDL和画图法两种方法设计了数据通路;2、实验中主要在画图的过程中出现了一些问题,一开始对实验原理图不是很理解,对芯片的选择弄不对,进过自己的仔细分析弄清楚了各部分的功能;在程序计数器PC的设计方面遇到了困难,本实验是通过两片74161芯片级联而成,在高四位的时钟信号的生成上遇到了困难,经过好长时间的实验才解决(解决方法见上)3、波形模拟过程中在PC的装载上出现了问题,经检查原来是SW_bus打开的同时存储器进行了读得操作,结果存储器里的数据和K值被同时放到了总线上导致PC装载时出错,在这里耽误了我许多时间;以后实验还是需要更加仔细一些,本次试验花费了我很多时间,但也暴露出了我的一些个问题。
姓名:郭灵芝学号:0704240115班级:通信一班07042200实验一0704240115 郭灵芝通信一班一.实验内容1.调节电路静态工作点(调节电位计),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。
2.加入信号源频率5kHz(幅度1mV) ,调节电路使输出不失真,测试此时的静态工作点值。
测电路的输入电阻、输出电阻和电压增益;3.设计一个分压偏置的单管电压放大电路,要求信号源频率5kHz(幅度1mV) ,负载电阻5.1kΩ,电压增益大于50。
4.测电路的频率响应曲线和f L、f H值。
二.放大电路的原理图(1-1)放大电路的原理图R为滑动变阻器,该电路用的是三极管来实现放大,采用的是电压偏置,接法是共射极,1R的大小从而改变三极管的静态工作点,使三极管处于正常放通过它改变接入电路中的1大状态。
为了确定好的静态工作点,进行如下静态分析:上面图1-1的静态电路如下(1-2)放大电路所对应的静态电路可以用两个交流电压表分别测量输入电压和输出电压,输出电压除以输入电压即为放大倍数。
为了保证放大电路工作在放大区(可用示波器监测,保证波形不失真),将交流输入电压调为1mv,2mv,3mv 。
电压表均用交流模式。
当交流信号源取下表所示不同值时,读出电压表的读数,即i V 和0V ,并计算电压的放大倍数。
(表一)结论:当三极管工作在放大区时,其电压放大倍数近似为常数。
即输入电压随输入电压线性变化。
且放大倍数符合大于50的要求。
(表二)结论1R 调到10%到80%之间时三极管都正常放大,这可以通过C I 与B I 的比值即β来确定,在这个区间里β基本保持不变,当然1R 处于0%到10%之间的确定不了,这个还要通过实际测量的β来确定。
三.失真研究1. 电位器调到0%,交流信号保持20mv ,5 KHz ,输出信号如下(1-3)饱和失真的波形图此时负半周出现了失真,即削底,对于NPN 管说明出现了饱和失真。
《EDA》课程设计报告——正弦波信号发生器的设计一、设计目的:进一步熟悉QuartusII及其LPM_ROM与FPGA 硬件资源的使用方法。
培养动手能力以及合作能力。
二、设计要求:1、clk为12MHz。
2、通过DAC0832输出正弦波电压信号,电压范围0~-5V。
3、通过示波器观察波形。
三、设计内容:在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。
最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。
信号输出的D/A使用实验系统上的ADC0832。
四、设计原理:图1所示的正弦波信号发生器的结构由四部分组成:1、计数器或地址发生器(这里选择10位)。
2、正弦信号数据ROM(10位地址线,8位数据线),含有1024个8位数据(一个周期)。
3、VHDL顶层设计。
4、8位D/A(实验中可用ADC0832代替)。
图1所示的信号发生器结构图中,顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由10位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。
LPM_ROM底层是FPGA 中的EAB、ESB或M4K等模块。
地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择1024点),以及D/A输出的频率f的关系是:f=fo/1024图1 正弦信号发生器结构框图图2 正弦波信号发生器的设计图五、设计步骤:1、建立.mif格式文件首先,mif文件可用C语言程序生成,产生正弦波数值的C程序如下:#include<stdio.h>#include<math.h>main(){int i;float s;for(i=0;i<1024;i++){s=sin(atan(1)*8*i/256);printf("%d :%d;\n",i,(int)((s+1)*255/2)) }}其次,把上述程序编译后,在DOS命令行下执行命令:romgen > sdata.mif;将生成的sdata.mif 文件,再加上.mif文件的头部说明即可。
《EDA技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称实验7:LED动态扫描控制器的设计二、任务及要求【基本部分】1、新建原理图文件,调用以前的电子钟模块、LED显示译码器模块及其他计数器模块、译码器模块等,实现电子钟时、分、秒的结果在实验箱数码管上以动态扫描的方式显示出来。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【提示】数码管为共阴极,低电平选中,电子钟等模块的使能、清零信号等直接接电源或地(正常工作)。
位选信位段数据,接个数码管公组4位二进制数据三、实验程序PIN_T4VCCclk2INPUT PIN_U1VCCclk1INPUT P IN_U14VCCrco1INPUT P IN_U15VCCrco2INPUT P IN_T19VCCenINPUT P IN_T20VCCclrINPUT P IN_M21P IN_M22P IN_M19P IN_M20P IN_M16P IN_N21P IN_N22out[6..0]OUTPUT P IN_J19P IN_J18P IN_J20P IN_K21P IN_K22P IN_K19P IN_K18P IN_L21y y [7..0]OUTPUTs[2..0]a[3..0]b[3..0]c[3..0]d[3..0]e[3..0]f [3..0]y [3..0]sixselectoneinst5s[2..0]y [7..0]seqsinst4clken clr coqh[2..0]sixinst8X[3..0]Y[6..0]sel[7..0]ledinst1rco1rco2e cr ckmg[3..0]tg[3..0]xg[3..0]ms[3..0]ts[3..0]xs[3..0]clockinst6mg[3..0]y [3..0]y [3..0]xs[3..0]xg[3..0]ts[3..0]tg[3..0]ms[3..0]sel[7..0]qh[2..0]mg[3..0]tg[3..0]xg[3..0]ms[3..0]ts[3..0]xs[3..0]coqh[2..0]qh[2..0]图7-1 LED 动态扫描控制器原理图四、仿真及结果分析图7-2 LED 动态扫描控制器仿真图结果分析:从波形图中可看出程序和结果都是正确的,运行正常。
EDA实验报告课程名称:EDA技术实验实验名称:7段数码显示译码器设计班级:姓名:指导老师评定:签名:一、实验目的设计一个7段数码显示译码器设计。
二、实验仪器计算机一台,U盘一个,QuartusⅡ软件三、实验步骤1. 新建一个文件夹YHY,打开QuartusⅡ软件,选择菜单File→New,在弹出的New 对话框中选择Device Design File页的原理图文件编辑器输入项VHDL File(如图一),按OK按钮打开VHDL编辑器窗口。
2. 在VHDL编辑器窗口输入7段数码显示译码器的VHDL描述:IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END;ARCHITECTURE ONE OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>LED7S<="0111111";WHEN "0001"=>LED7S<="0000110";WHEN "0010"=>LED7S<="1011011";WHEN "0011"=>LED7S<="1001111";WHEN "0100"=>LED7S<="1100110";WHEN "0101"=>LED7S<="1101101";WHEN "0110"=>LED7S<="1111101";WHEN "0111"=>LED7S<="0000111";WHEN "1000"=>LED7S<="1111111";WHEN "1001"=>LED7S<="1101111";WHEN "1010"=>LED7S<="1110111";WHEN "1011"=>LED7S<="1111100";WHEN "1100"=>LED7S<="0111001"; WHEN "1101"=>LED7S<="1011110";WHEN "1110"=>LED7S<="1111001"; WHEN "1111"=>LED7S<="1110001";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;3. 编译并运行,观察其波形输出(如下图)。
可编程逻辑器件及EDA技术实验报告一、组合逻辑电路设计数字逻辑电路按照逻辑功能的特点分为两类,一类是组合逻辑电路,简称为组合电路;另一类是时序逻辑电路,简称为时序电路。
组合电路的特点是电路任意时刻输出状态只取决该时刻的输入状态,而与该时刻钱的电路状态无关。
1、逻辑门电路设计实验原理:逻辑门电路包括基本逻辑门电路和符合逻辑门电路。
VHDL语言可以直接支持的逻辑运算符共有七种逻辑运算,它们是:NOT 逻辑非AND 逻辑与NAND 逻辑与非OR 逻辑或NOR 或非XOR 异或XNOR 异或非实验内容:例3-2的参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee. std_logic_unsigned.all;entity example3_2 isport(a,b,c,d:in std_logic;f:out std_logic_vector(3 downto 0));end example3_2;architecture behavioral of example3_2 isbeginf(0)<=(a and b)or(b and c)or(not b and not c);f(1)<=(a and b and c)or not(not a or not b or not c);f(2)<=(a xor b xor c)or(not(d)and(a or c));f(3)<=not ((a and b)xor (c and d))or((a and b and d)xor(b and c and d));end behavioral;实验分析:用逻辑运算符是实现了相对较为复杂的逻辑运算。
参考程序中使用括号来强制控制逻辑运算的优先级,对于用VHDL设计,这种写法是必修的。
use ieee.std_logic_1164.all;
entity lol is
port(a:in std_logic_vector(3 downto 0); b:in std_logic_vector(2 downto 0);
c:out std_logic_vector(7 downto 0);
led7s:out std_logic_vector(6 downto 0)); end;
architecture one of lol is
begin
process(b)
begin
case b is
when"000"=>c<="00000001"; when"001"=>c<="00000010"; when"010"=>c<="00000100"; when"011"=>c<="00001000"; when"100"=>c<="00010000"; when"101"=>c<="00100000"; when"110"=>c<="01000000"; when"111"=>c<="10000000";
when others=>null;
end case;
end process;
process(a)
begin
case a is
when"0000"=>led7s<="1000000"; when"0001"=>led7s<="1111001"; when"0010"=>led7s<="0100100"; when"0011"=>led7s<="0110000"; when"0100"=>led7s<="0011001"; when"0101"=>led7s<="0010010"; when"0110"=>led7s<="0000010"; when"0111"=>led7s<="1111000"; when"1000"=>led7s<="0000000"; when"1001"=>led7s<="0010000"; when"1010"=>led7s<="0001000"; when"1011"=>led7s<="0000011"; when"1100"=>led7s<="1000110"; when"1101"=>led7s<="0100001"; when"1110"=>led7s<="0000110"; when"1111"=>led7s<="0001110"; when others=>null;
end process; end;。