EDA实验报告
EDA实验报告
目录第一部分实验开发系统概述及使用说明.............................................................. 1第一章EDA实验系统 ....................................................................................... 1第二章EDA/SOPC实验系统 ............................................................................ 7第二部分实验部分............................................................................................ 10实验一EDA工具基本操作与应用 ........................................................... 10实验二计数器设计..................................................................................... 24实验三串入/并出移位寄存器实现 ........................................................... 26实验四四人抢答器设计............................................................................. 28实验五序列检测器设计............................................................................. 29实验六DDS信号源的设计........................................................................ 30实验七交通灯控制器设计......................................................................... 31实验八数字钟设计..................................................................................... 32实验九出租车计费器设计......................................................................... 33实验十频率计的实现................................................................................. 34附录——FPGA接口对照表 ............................................................................ 35第一部分实验开发系统概述及使用说明第一章EDA实验系统一、实验系统概述此系列实验系统针对数字电路设计CPLD/FPGA及模拟电路设计技术有一总体上的概念。
EDA实验报告
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。
EDA-实验报告
实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。
若输入信号高电平数目多于低电平数目,则输出为高,否则为低。
三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。
对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。
四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。
则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。
其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。
EDA实验 报告范文
实验一:五人表决器一、程序清单library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity vote5 isport(v_in:in std_logic_vector(4 downto 0);lock,clr:in std_logic;v_over:out std_logic_vector(2 downto 0);num_agr,num_opp:out std_logic_vector(3 downto 0);v_out:out std_logic_vector(4 downto 0);led_agr,led_opp:out std_logic);end entity vote5;architecture one of vote5 isbeginprocess(clr,v_in,lock)variable agr,opp: std_logic_vector(3 downto 0);beginif(clr='1')thenled_agr<='0';led_opp<='0';agr:="0000";opp:="0000";if agr="0000" thennum_agr<="0000";end if;if opp="0000"thennum_opp<="0000";end if;v_out<="00000";v_over<="000";elsif(lock'event and lock='1')thenv_out<=v_in;v_over<="111";agr:="0000";opp:="0000";for i in 0 to 4 loopif (v_in(i)<='0') then opp:=opp+1;end if;agr:=5-opp;end loop;num_agr<=agr;num_opp<=opp;if(agr>opp)thenled_agr<='1';led_opp<='0';elseled_agr<='0';led_opp<='1';end if;end if;end process;end architecture one;三.仿真1. 功能仿真波形2.时序仿真波形实验二:九九乘法表系统的设计一、程序清单library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity multiply is --构造体描述4位乘法器port( clk:in std_logic;a,b:in std_logic_vector(3 downto 0);led_data:out std_logic_vector(7 downto 0);seg_sel:out std_logic_vector(2 downto 0) );end multiply;architecture rtl of multiply issignal led_data2,led_data1,led_data0: std_logic_vector(7 downto 0);--LED显示代码,寄存十位个位的数signal displayclk: std_logic;beginprocess(a,b)variable s: std_logic_vector(7 downto 0);--乘积variable bai,shiwei,gewei: std_logic_vector(3 downto 0);--乘积的十位个位begins(7 downto 0):=a(3 downto 0)*b(3 downto 0);if s>="11001000" then bai:="0010";s:=s-"11001000";elsif s>="01100100" then bai:="0001";s:=s-"01100100";else bai:="0000";end if;if s>="01011010" then shiwei:="1001";s:=s-"01011010";gewei:=s(3 downto 0);--90以上 elsif s>="01010000" then shiwei:="1000";s:=s-"01010000";gewei:=s(3 downto 0);--80以上 elsif s>="01000110" then shiwei:="0111";s:=s-"01000110";gewei:=s(3 downto 0); --70以上 elsif s>="00111100" then shiwei:="0110";s:=s-"00111100";gewei:=s(3 downto 0);--60以上 elsif s>="00110010" then shiwei:="0101";s:=s-"00110010";gewei:=s(3 downto 0);--50以上 elsif s>="00101000" then shiwei:="0100";s:=s-"00101000";gewei:=s(3 downto 0);--40以上 elsif s>="00011110" then shiwei:="0011";s:=s-"00011110";gewei:=s(3 downto 0);--30以上 elsif s>="00010100" then shiwei:="0010";s:=s-"00010100";gewei:=s(3 downto 0);--20以上 elsif s>="00001010" then shiwei:="0001";s:=s-"00001010";gewei:=s(3 downto 0);--10以上 else gewei:=s(3 downto 0);shiwei:="0000";end if;case bai iswhen "0001" => led_data2<="11111001";when "0010" => led_data2<="10100100";when others => led_data2<="11111111";end case;case shiwei iswhen "0000" => led_data1<="11000000";when "0001" => led_data1<="11111001";when "0010" => led_data1<="10100100";when "0011" => led_data1<="10110000";when "0100" => led_data1<="10011001";when "0101" => led_data1<="10010010";when "0110" => led_data1<="10000010";when "0111" => led_data1<="11111000";when "1000" => led_data1<="10000000";when "1001" => led_data1<="10010000";when others => led_data1<="11111111";end case;case gewei iswhen "0000" => led_data0<="11000000";when "0001" => led_data0<="11111001";when "0010" => led_data0<="10100100";when "0011" => led_data0<="10110000";when "0100" => led_data0<="10011001";when "0101" => led_data0<="10010010";when "0110" => led_data0<="10000010";when "0111" => led_data0<="11111000";when "1000" => led_data0<="10000000";when "1001" => led_data0<="10010000";when others => led_data0<="11111111";end case;end process;process(clk)variable cnt:integer range 0 to 20000; --1KHZ扫描显示时钟 beginif clk'event and clk='1' then cnt:=cnt+1;if cnt<10000 then displayclk<='1';elsif cnt<20000 then displayclk<='0';else cnt:=0;displayclk<='0';end if;end if;end process;process (displayclk) --显示两位variable cnt2: std_logic_vector(1 downto 0);beginif displayclk'event and displayclk='1' then cnt2:=cnt2+1;if cnt2="01" then seg_sel<="001";led_data<=led_data0;elsif cnt2="010" then seg_sel<="010";led_data<=led_data1;elsif cnt2="11" then cnt2:="00"; seg_sel<="100";led_data<=led_data2;end if;end if;end process;end rtl;二、仿真设计输入文件经maxplus软件开发系统编译、处理,由功能仿真器进行模拟,获得仿真波形如图6所示。
EDA实验报告正文
实验一单级放大电路的设计与仿真一、实验目的1.掌握放大电路静态工作点的调整与测试方法;2.掌握放大电路动态参数的测试方法;3.观察动态工作点的选择对输出波形及放大倍数的影响。
二、实验要求1.设计一个分压偏置的单管电压放大电路,要求信号源频率5kHz(峰值10mV) ,负载电阻5.1kΩ,电压增益大于50。
2.调节电路静态工作点(调节偏置电阻),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。
3.调节电路静态工作点(调节偏置电阻),使电路输出信号不失真,并且幅度最大。
在此状态下测试:①电路静态工作点值;r、ce r值;②三极管的输入、输出特性曲线和 、be③电路的输入电阻、输出电阻和电压增益;f、H f值。
④电路的频率响应曲线和L三、实验步骤1.单级放大电路的原理图:2.a.电路的饱和失真:静态工作点参数:图表3 饱和失真时静态工作点参数数据分析:Ib=12.90259uA Ic=2.07754mA Uce=0.20717V此时电位器为0%,基极静态电流过大而导致三极管达到饱和,使得电路出现失真。
b.电路的截止失真:图表4 截止失真时输出电压波形图静态工作点参数:图表5 截止失真时静态工作点参数数据分析:Ib=3.87579uA Ic=834.27745uA Uce=6.07513V此时电位器为100%,使得基极电位减小,三极管截止导致电路出现失真。
c.电路的最大不失真输出:图表6 最大不失真时输出电压波形图静态工作点参数:图表7 最大不失真时输出时静态工作点参数数据分析:Ube=0.64415V IC=1.87602mA IB=9.05731uA Uce=1.23723V β=207 此时电位器为20%3.a.三极管的输入特性:图表8 输入特性测试电路图表9 最大不失真时输入特性曲线从上图数据可以得出rbe=2.8353kΩb.三极管的输出特性:电路图及曲线:图表10 输出特性测试电路图表11 最大不失真时输出特性曲线从上图数据可以得出rce=10.793kΩ4.输入电阻的测量:图表12 输入电阻测量电路及数据从上图数据可以得出测试输入电流i=3.864uA 电阻Ri=2.588kΩ理论输入电阻Ri=2.483 kΩ误差4.1%5.输出电阻的测量:图表13 输出电阻测量电路及数据从上图数据可以得出测试输出电阻Ro=2.097kΩ理论输出电阻Ro=2.030 kΩ误差3.2%6.电压增益:图表14 电压增益测量电路及数据Au=110.557.电路的频率特性:图表15 波特图及数据最大输出增益41.25dB图表15 波特图及数据fL=229Hz fH=14.470MHz四、实验小结从以上测量的数据与理论计算值比较可以发现存在一定的误差,误差产生的原因可能包括:a.本次试验中的器件均选用实际器件,它们自身存在随机误差,例如:实验所用三极管的输出特性曲线放大区并非理想的水平平行线,而是发散的,只就导致正常放大的波形出现不对称行,仿佛截止失真。
EDA实验报告(12份).pdf
实验一组合电路的设计1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all; entity mux21a isport(a,b,s:in std_logic;y:out std_logic); end entity mux21a; architecture one of mux21a is beginy<=a when s='0' else b ; end architecture one ;4. 仿真波形(如图1-1所示)图1-1 2选1多路选择器仿真波形5. 试验总结:从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。
实验二时序电路的设计1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。
2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all;entity suocun7 isport(clk: in std_logic;en: in std_logic;D: in std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0)); end suocun7;architecture one of suocun7 issignal K: std_logic_vector(7 downto 0); beginprocess(clk,en,D)beginif clk'event and clk='1' thenif en ='0'thenK<=D;end if;end if;end process;B<=K;end one;4.仿真波形(如图2-1所示)图2-1 8位锁存器仿真波形此程序完成的是一个8位锁存器,当时钟上升沿到来(clk'event and clk='1')、使能端为低电平(en ='0')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。
EDA实验报告
实验一:不同设计输入方式比较1、实验目的(1) 学习MAX+plus II软件的基本使用方法。
(2) 学习EDA实验开发系统的基本使用方法。
(3) 掌握VHDL程序的原理图和文本输入方式。
2、实验内容(1) 原理图输入(mux21.vhd) 方式的2选1多路选择器的设计(2) 文本编辑输入(mux41.vhd) 方式的4选1多路选择器的设计3、实验要求(1) MAX+plus II软件画出系统的原理框图,说明系统中各主要组成部分的功能。
(2) 编写VHDL源程序。
(3) 在MAX+plus II工具下编译、综合、适配、仿真、实验板上的硬件测试。
(4) 根据EDA实验开发装置编好用于硬件验证的管脚锁定文件。
(5) 记录系统仿真、硬件验证结果。
(6) 记录实验过程中出现的问题及解决办法。
4:实验步骤:程序编译过程:新建text文件→输入程序并保存其中保存名为实体名,并以vhd类型结尾→点击file下的project设定为current file点击maxplus 中的compiler按钮→显示无误后→点击新建按钮建立wave 文件→点击node 按钮添加管脚→保存并按text 的步骤检验wave 文件。
(1):用原理图法实现二选一多路选择器。
二选一选择器原理图其中B端为控制端,A,C为控制端(2):用文本输入法实现四选一多路选择器。
其文本程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORT(INPUT:IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B:IN STD_LOGIC;Y:OUT STD_LOGIC);END MUX41;ARCHITECTURE BE_MUX41 OF MUX41 ISSIGNAL SEL:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINSEL<=A&B;PROCESS(INPUT,SEL)BEGINIF(SEL="00")THENY<=INPUT(0);ELSIF(SEL="01")THENY<=INPUT(1);ELSIF(SEL="10")THENY<=INPUT(2);ELSEY<=INPUT(3);END IF;END PROCESS;END BE_MUX41;实验二:VHDL语言编程—组合逻辑电路设计1、实验目的(1) 学习VHDL三种描述风格;(2) 学习元件例化语句的使用方法;(3) 学习VHDL程序层次化设计方法2、实验内容用元件例化语句方法和原理图方法设计四位全加器。
EDA实验报告 (2)
实验一QUARTUS II软件安装、基本界面及设计入门一、实验目的:QUARTUSII是Altera公司提供的EDA工具,是当今业界最优秀的EDA设计工具之一。
提供了一种与结构无关的设计环境,使得电子设计人员能够方便地进行设计输入、快速处理和器件编程。
通过本次实验使学生熟悉QUARTUSII软件的安装,基本界面及基本操作,并练习使用QUARTUS的图形编辑器绘制电路图。
二、实验内容:1、安装QUARTUSII软件;2、熟悉QUARTUSII基本界面及操作;3通过一个4位加法器的设计实例来熟悉采用图形输入方式进行简单逻辑设计的步骤。
三、实验仪器:1、PC机一台;2、QUARTUSII软件;3、EDA实验箱。
四、实验原理:4位加法器是一种可实现两个4位二进制数的加法操作的器件。
输入两个4位二进制的被加数A和B,以及输入进位Ci,输出为一个4位二进制和数D和输出进位数Co。
半加操作就是求两个加数A、B的和,输出本位和数S及进位数C。
全加器有3位输入,分别是加数A、B和一个进位Ci。
将这3个数相加,得出本位和数(全加和数)D和进位数Co。
全加器由两个半加器和一个或门组成。
五、实验步骤:安装QUARTUSII软件;因为实验时我的机器了已经有QUARTUSII软件,所以我并没有进行安装软件的操作。
设计半加器:在进行半加器模块逻辑设计时,采用由上至下的设计方法,在进行设计输入时,需要由下至上分级输入,使用QuartusIIGraphic Editor进行设计输入的步骤如下。
(1)、打开QUARTUSII软件,选择File-new project wizard…新建一个设计实体名为has的项目文件;(2)、新建文件,在block.bdf窗口下添加元件符号,并连接。
如下图:半加器原理图(3)、将此文件另存为has.gdf的文件。
(4)、在主菜单中选择Processing→Start Compilation命令,系统对设计进行编译,同时打开Compilation Report Flow Summary窗体,Status视图显示编译进程。
EDA实验报告
EDA 实验实验一 用原理图输入法设计半加器一、实验目的:1.熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路;2.通过一个半加器的设计把握利用EDA 软件进行电子线路设计的详细流程;3.学会对实验板上的FPGA/CPLD 进行编程下载,硬件验证自己的设计项目。
二、实验器材:1、计算机及操作系统2、QUARTUS II 软件三、实验要求:1. 利用原理图输入法对半加器电路进行描述;2. 进行波形仿真测试;3. 严格按照实验步骤进行实验;4. 管脚映射按照芯片的要求进行。
四、实验原理其中a, b 为输入端口,So 与Co 分别为半加器和与进位。
其逻辑表达式为:2. 根据逻辑表达式进行原理图输入。
五、实验步骤:1. 为本项工程设计建立文件夹。
注意文件夹名不能用中文,且不可带空格。
2. 输入设计项目并存盘。
3. 将设计项目设计为工程文件。
4. 选择目标器件并编译。
b a b a b a So ⊕=+=ab Co =5. 时序仿真。
6. 引脚锁定。
7. 编程下载。
实验二用原理图法设计一位、四位全加器一、实验目的:1. 熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路;2. 通过一个半加器的设计把握利用EDA 软件进行电子线路设计的详细流程;3. 学会对实验板上的FPGA/CPLD 进行编程下载,硬件验证自己的设计项目。
二、实验器材:1、计算机及操作系统2、QUARTUS II软件三、实验要求:1.利用原理图输入法对一位全加器电路进行描述;2. 进行波形仿真测试;3. 严格按照实验步骤进行实验;四、实验原理:利用实验一所设计的半加器设计一位全加器;利用设计封装好的一位全加器进行四位全加器的设计。
五、实验步骤:与实验一相同。
六、实验报告:1. 要求画出一位、四位全加器的真值表;2. 分析用半加器实现一位全加器的优点;3. 对波形进行分析,并绘制波形图。
实验三用文本输入法设计D触发器和锁存器一、实验目的:1. 熟悉QuartusⅡ的VHDL 文本设计过程。
eda仿真实验报告
eda仿真实验报告EDA仿真实验报告一、引言EDA(Electronic Design Automation)是电子设计自动化的缩写,是指利用计算机技术对电子设计进行辅助、自动化的过程。
在现代电子设计中,EDA仿真是不可或缺的一环,它可以帮助工程师验证电路设计的正确性、性能和可靠性。
本篇报告将介绍我在EDA仿真实验中的经验和收获。
二、实验背景本次实验的目标是对一个数字电路进行仿真,该电路是一个4位加法器,用于将两个4位二进制数相加。
通过仿真,我们可以验证电路设计的正确性,并观察其在不同输入情况下的输出结果。
三、实验步骤1. 电路设计:首先,我们根据给定的要求和电路原理图进行电路设计。
在设计过程中,我们需要考虑电路的逻辑关系、时序要求以及输入输出端口的定义等。
2. 仿真环境搭建:接下来,我们需要选择合适的EDA仿真工具,并搭建仿真环境。
在本次实验中,我选择了Xilinx ISE Design Suite作为仿真工具,并创建了一个仿真项目。
3. 仿真测试向量生成:为了对电路进行全面的测试,我们需要生成一组合适的仿真测试向量。
这些测试向量应该覆盖了电路的所有可能输入情况,以验证电路的正确性。
4. 仿真运行:在仿真环境搭建完成后,我们可以开始进行仿真运行了。
通过加载测试向量,并观察仿真结果,我们可以判断电路在不同输入情况下的输出是否符合预期。
5. 仿真结果分析:仿真运行结束后,我们需要对仿真结果进行分析。
通过对比仿真输出和预期结果,可以判断电路设计的正确性。
如果有不符合预期的情况,我们还可以通过仿真波形分析,找出问题所在。
四、实验结果与讨论在本次实验中,我成功完成了4位加法器的仿真。
通过对比仿真输出和预期结果,我发现电路设计的正确性得到了验证。
无论是正常情况下的加法运算,还是特殊情况下的进位和溢出,电路都能够正确地输出结果。
在实验过程中,我还发现了一些有趣的现象。
例如,在输入两个相同的4位二进制数时,电路的输出结果与输入完全一致。
EDA实习报告1
贵州师范大学学生实习报告科目:EDA实习专业: 电气工程及其自动化班级: 10电气**: ***学号: ************实验项目名称:数字电子钟的设计实验项目性质:普通试验所属课程名称:VHDL程序设计一、实验目的1 学习VHDL语言的一些基本特点。
2 掌握VHDL程序的基本结构。
3掌握VHDL程序设计方法。
4 要能够用vhdl语言读懂并编写eda程序,对eda设计的总体框架能有较好的把握,掌握各模块的调用方式。
二、实验内容和要求设计一个数字时钟,显示时(2位),分(2位),秒(2位),具体要求是:具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零功能。
在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。
三、实验主要仪器设备和材料计算机,开发环境MAX-PLUSII,ZY11EDA实验系统,VHDL语言。
四、实验方法、步骤及结果测试1、设计思路:数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分位60进制计数器,小时为24进制计数器,分别产生3位BCD码。
BCD码经译码,驱动后接数码显示电路。
根据实验要求,将设计分为5个主要部分,时功能模块、分功能模块、秒功能模块、扫描仪功能模块和7段LED功能模块。
在时、分、秒模块中,包括复位和预置数,其主要思路如下:秒钟的模块:设计一个60进制的计数器,以clk为其时钟信号,每60个clk后产生一个进位信号CF给分钟模块,作为分钟进程的响应信号。
秒钟模块VHDL程序见附录1:仿真波形如下:封装如下图:分钟的模块:同理于秒钟的模块,设计一个60进制的计数器,以CFM为其时钟信号,每60个CFM后产生一个进位信号CFM给小时模块,作为小时模块进程的响应信号。
分钟模块VHDL程序见附录二:仿真波形如下:封装如下图:小时的模块:为24进制计数器,在分的进位信号CFM的激发下计数,从0到23的时候产生一个信号CFH,全部清0,重新开始计时。
电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告
电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。
要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。
1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。
2.建立新文件, 选择文本类型或原理图类型。
3. 编写程序。
4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。
若结果不正确, 则修改程序, 再编译, 直到正确。
模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。
EDA实验报告含结果图
EDA电子课程实验报告专业:班级:姓名:学号:实验一四人表决器一实验目的1、熟悉Quartus II软件的使用。
2、熟悉EDA-IV实验箱。
3、熟悉EDA开发的基本流程。
二硬件需求1、RC-EDA-IV型实验箱一台;2、RC-EDA-IV型实验箱配套USB-Blaster下载器一个;3、PC机一台。
三实验原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
四人表决器顾名思义就是由四个人来投票,当同意的票数大于或者等于3人时,则认为同意;反之,当否决的票数大于或者等于2人时,则认为不同意。
实验中用4个拨挡开关来表示4个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。
四实验内容VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;--------------------------------------------------------------------entity EXP3 isport(k1,K2,K3,K4 : in std_logic;ledag : out std_logic_vector(3 downto 0);m_Result : out std_logic);end EXP3;--------------------------------------------------------------------architecture behave of EXP3 issignal K_Num : std_logic_vector(2 downto 0); signal K1_Num,K2_Num: std_logic_vector(2 downto 0); signal K3_Num,K4_Num: std_logic_vector(2 downto 0);beginprocess(K1,K2,K3,K4)beginK1_Num<='0'&'0'&K1;K2_Num<='0'&'0'&K2;K3_Num<='0'&'0'&K3;K4_Num<='0'&'0'&K4;end process;process(K1_Num,K2_Num,K3_Num,K4_Num,)beginK_Num<=K1_Num+K2_Num+K3_Num+K4_Num;end process;process(K_Num) beginif(K_Num>2) thenm_Result<='1';elsem_Result<='0';end if;end process;end behave;实验电路实验二格雷码转换一实验目的1、了解格雷码变换的原理。
eda实验报告
实验一单级放大电路的设计与仿真一、实验内容1.设计一个分压偏置的电压放大电路,要求信号源频率5kHz(峰值1mV) ,负载电阻5.1kΩ,电压增益大于50。
2.调节电路静态工作点(调节电位计),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。
3.调节电路静态工作点(调节电位计),使电路输出信号不失真。
在此状态下测试:(1)电路静态工作点值;(2)电路的输入电阻、输出电阻和电压增益;(3)电路的频率响应曲线和fL、fH值。
二、实验要求1.给出单级放大电路原理图。
2.给出电路饱和失真、截止失真和不失真时的输出信号波形图,并给出三种状态下电路静态工作点值。
3.给出正常放大时测量输入电阻、输出电阻和电压增益的实验图,给出测试结果并和理论计算值进行比较。
4.给出电路的幅频和相频特性曲线,并给出电路的fL、fH值。
5.分析实验结果。
三、实验步骤1.实验原理图:2.饱和失真时波形(运行大概0.25s后波形稳定):此时静态工作点为:所以,I BQ=78.83507u A,I CQ=1.07079mA,U CEQ=V2-V1=41.3mV。
3.截止失真时波形:此时静态工作点为:所以,I BQ=877.72n A,I CQ=143.84u A,U CEQ=V2-V1=10.44V。
4.不失真时波形:此时静态工作点为:所以,I BQ= 3.92081u A,I CQ= 820.43565u A, U CEQ=V2-V1=3.14V。
5.不失真时测输入电阻:电路:万用表显示值:所以,Ri(测)=4.77KΩ,Ri(理)=R1||R2||Rbe=30K||20K||(26mV/Ibq+200)=30K||20K||6.633K=4.35KΩ相对误差E=9.6%,可以认为在误差允许的范围内实验结果是正确的。
6.不失真时测电压增益:电路图:万用表显示值:所以,Av(测)= -80.46, Av(理)= -β(R4||R5)/ Rbe= -83.87相对误差E=4.2%7.不失真时的输出电阻:电路:万用表读数:Ro(测)=5.799KΩRo(理)=R4=5.8KΩ,相对误差E=0.17% 。
eda实验报告完整版
eda实验报告完整版EDA实验报告一、文献综述EDA,全称为Exploratory Data Analysis,是一种数据探索性分析方法。
EDA通过多种可视化工具和数据分析技术快速探索数据集的特征和结构,从而发现其中的规律和异常,确定数据的可靠性和种类。
EDA的主要目的在于对数据进行全面的分析和理解,为后续的数据处理和建模提供参考。
EDA作为数据预处理的重要步骤,在数据分析和建模中占据着重要的地位。
目前,随着数据收集、存储和分析技术的快速发展,EDA正在成为数据分析中不可缺少的部分。
在大数据时代,EDA的发展已经超越了其传统的数据探索性分析功能,成为了快速调试和优化模型的重要手段。
二、实验目的本次实验旨在掌握EDA技术方法和可视化工具,在实际数据集中进行数据预处理和探索性分析。
主要目标包括:1.掌握常用的EDA方法和可视化工具。
2.通过对实际数据集处理和分析,了解数据的特征和结构。
3.确定数据集的质量、可靠性和种类。
4.为后续的数据处理和建模提供参考。
三、实验流程1.数据集的加载和清洗本次实验选用的数据集为Iris数据集,包含了鸢尾花的三个品种(Setosa、Versicolour、Virginica)的四个特征(sepal length、sepal width、petal length、petal width)共150个样本。
由于Iris数据集已经经过处理,因此不需要进行特殊的预处理。
为了更好地探索Iris数据集,我们将其存储为dataframe格式,以方便进行数据的各类统计和可视化。
2.数据特征的可视化在数据特征的可视化中,我们使用了多种可视化工具包括:ggplot2和ggpubr。
下面是我们在R语言环境下所使用的代码。
# 加载ggplot2和ggpubrlibrary(ggplot2)library(ggpubr)#加载Iris数据集data("iris")df = iris# 1.绘制直方图hist <- ggplot(df, aes(x = Sepal.Length)) +geom_histogram(fill = "blue", alpha = .5, bins = 30) +ggtitle("Distribution of Sepal.Length")# 2.绘制密度图density <- ggplot(df, aes(x = Sepal.Width, fill = Species)) +geom_density(alpha = .5) +scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +ggtitle("Density plot of Sepal.Width")# 5.绘制箱线图boxplot <- ggplot(df, aes(x = Species, y = Sepal.Length, fill = Species)) + geom_boxplot() +ggtitle("Boxplot of Sepal.Length by Species")上述代码会生成6个图表,分别为直方图、密度图、散点图、热力图、箱线图和柱状图。
EDA原理及应用 实验报告
一.基础部分1.整体框架采用自顶向下的层次化设计思路,将实现功能的各模块放入单独的文件内完成,最后通过top文件例化各个模块实现整体功能,再根据引脚约束与硬件对应。
在本例的基础部分主要分为计数频率5hz的分频,七段数码管的驱动,七段数码管扫描的频率,计数模块,16进制到10进制转换模块。
下面逐项介绍:2.计数频率5HZ分频a.设计思路由上一个实验,我们知道1HZ的分频需要计数到49999999,因此本例的5HZ应该计数到上次计数值的五分之一:9999999,也就是十六进制下的98967f,将分频后的时钟div_clk_098作为输出。
为了最终的顶层设计具有清零功能,因此对每一个子模块也加入清零引脚。
b.源代码module divclk_2_098(input clk_098,input rst_098,output reg div_clk_098);reg[31:0]counter_098;always@(posedge clk_098 or posedge rst_098)beginif(rst_098)counter_098<=32'h00000000;elseif(counter_098==32'h0098967f)//5hz分频begincounter_098<=32'h00000000;div_clk_098<=~div_clk_098;endelsecounter_098<=counter_098+1;endendmodule3.数码管刷新频率分频a.设计思路根据人眼的视觉暂留效应,当数码管的刷新频率很快的时候,看上去会像多个数码管通识导通。
但原有100MHZ的主频太快,以此刷新并不能实现效果,查阅资料并实际测试,让其计数到60000左右可以完成任务,最终选取了61567,即16进制下的f07f,将输出scan_clk_098作为顶层文件中的七段数码管的时钟进行驱动刷新。
EDA的实验报告
杭州电子科技大学实验报告实验课程名称实实班姓学指导教验验序内号容级名号师eda技术 1 分频器与频率计设计 123 吕文 123 黄某二○一四年 4月 18 日一、实验的目的与要求实验名称:分频器与频率计设计实验目的:1、初识verilog hdl语言熟练verilog 的语法2、学习quartus调用modelsim进行仿真3、掌握用fpga实现简易的分频器与频率计的原理与方法实验要求:1、设计一个可控分频器,输入20mhz或 12mhz 时钟(可选择其中一种),输出100hz~10khz,输出100hz ~ 10khz,输出频率数控可调(按键或者使用in-system sources and probes),输出波形占空比为50%,接蜂鸣器;2、设计一个简易频率计,输入为方波,测量频率的范围100hz ~ 9999hz ,测量精度<1%,频率计输出可以接数码管或者使用in-system sources and probes观察3、分频器输出接频率计的输入二、实验原理分频器的原理:把输入的信号作为计数脉冲,由于计数器的输出端口是按一定规律输出脉冲的,所以对不同的端口输出的信号脉冲,就可以看作是对输入信号的”分频“。
频率计是对信号的频率进行测量并显示测量结果。
原理就是在1秒钟内对时钟计数,得到的数字就是频率大小。
频率计的设计是用一个标准的时钟20mhz来做参照,以1s钟为周期,为20000000个周期,同时定义一个计数的变量q ,当输入的端口出现上升沿的时候,变量加1,那么在一秒钟内cout的数值即为,该波形的频率。
最后将分频器的输出端口接入频率计的输入端口,用频率计来测量波形的频率大小,通过比较实际的频率fre1与测出来的频率大小fre2,就知道了该频率计的误差。
三、实验内容实验步骤 1、大概的把框架建起来,把思路想好2、先设计一个符合要求的分频器3、进行仿真,看效果3、再设计一个符合要求的频率计4、用modelsim进行仿真5、把这两部分连接起来,最后进行仿真得到结果6、得到频率计的测频误差本实验分频器的时钟是20mhz,分频出来的是100hz~10khz的波形,那么就定义一个变量当做分频比[17:0] div ,可以用按键来控制div的大小,继而实现分频出来的大小。
EDA实验设计报告
EDA实验设计报告一、实验名称基于FPGA的数字时钟二、实验目的初步掌握EDA设计环节,通过设计一个数字时钟,加深FPGA的工作原理和开发流程,加强硬件描述语言V erilog的编程能力,为后续学习和竞赛打好基础。
通过设计扩展部分,进一步提高FPGA的设计能力,同时了解软硬件接口的设计,建立起系统设计的概念。
三、实验内容1、数字时钟(1)基本要求用同步时序电路设计实现时、分、秒计数的数字钟,并在数码管上正确显示。
(2)扩展要求1、可以按键清。
;2、支持年月日显示功能,用按键进行年月日和时分秒间显示切换。
3、可对显示内容进行修改,用按键键值代替显示内容,按键键值可自行定义。
2、秒表设计内容:利用5个数码管完成秒表显示功能。
要求:1、精度达100ms;2、可以清零;3、可暂停;4、最大计时为999.9s。
3、跑马灯设计实现8个发光二极管以不同频率(2Hz,1Hz,0.5Hz)循环进行左滚动、右滚动、向中间滚动、向两边滚动、闪动等效果,不同频率显示用按键进行切换。
4、VGA显示设计1、分辨率为1024*768/60Hz、1024*768/75Hz、800*600/60Hz三种。
2、红绿蓝单色、彩色棋盘格、圆等图形以1Hz的速率切换显示;3、8级灰度呈条状递增显示。
四、实验仪器Altera公司:Cyclone II EP2C20Q240 FPGA 及实验箱USB-BLASTER 下载线Quartus II 11.0 开发环境外围电路五、实验内容1、硬件系统图学校实验箱系统图:自制显示电路图:4段数码管X2 74LS138VGA接口电路数码管电路led灯电路2、软件部分顶层设计文件bdf原理图输出模块组成。
控制模块:控制功能模块的开启和关闭,同时控制系统选择输出输出相应模块的信号。
系统选择输出模块:因为实验箱数码管和led灯共用8个端口,由三片锁存器控制,所以该模块可根据控制模块的信号选择开启相应模块的输出和锁存控制端。
EDA实验报告
EDA实验报告一、实验目的本次 EDA 实验的主要目的是熟悉电子设计自动化(EDA)软件的使用,掌握数字电路的设计、仿真和实现流程,提高对数字逻辑电路的理解和设计能力。
二、实验设备与环境1、计算机一台2、 EDA 软件(如 Quartus II 等)三、实验原理1、数字逻辑基础数字电路中的基本逻辑门包括与门、或门、非门、与非门、或非门等。
通过这些基本逻辑门的组合,可以实现各种复杂的数字逻辑功能。
2、组合逻辑电路组合逻辑电路的输出仅取决于当前的输入,不存在存储单元。
常见的组合逻辑电路有加法器、编码器、译码器等。
3、时序逻辑电路时序逻辑电路的输出不仅取决于当前的输入,还与电路的过去状态有关。
常见的时序逻辑电路有计数器、寄存器等。
四、实验内容1、设计一个简单的加法器使用基本逻辑门设计一个两位加法器,输入为两个两位的二进制数A 和 B,输出为它们的和 S 以及进位 C。
2、设计一个 4 位计数器实现一个 4 位的计数器,能够在时钟信号的上升沿进行计数,计数范围为 0 到 15。
3、设计一个数码管显示译码器将输入的 4 位二进制数转换为数码管的 7 段显示编码,实现数字 0 到 9 的显示。
五、实验步骤1、加法器设计(1)打开 EDA 软件,创建一个新的项目。
(2)使用原理图输入方式,绘制出加法器的逻辑电路图,包括两个半加器和一个或门。
(3)对设计进行编译,检查是否存在语法错误。
(4)创建仿真文件,设置输入信号的激励,进行功能仿真,观察输出结果是否符合预期。
2、计数器设计(1)在项目中新建一个模块,使用 Verilog HDL 语言描述计数器的功能。
(2)编写测试代码,对计数器进行仿真验证。
(3)将计数器下载到硬件开发板上,通过观察实际的输出结果验证其功能。
3、数码管显示译码器设计(1)同样使用原理图输入方式,设计数码管显示译码器的逻辑电路。
(2)进行编译和仿真,确保译码器的功能正确。
(3)将译码器与计数器连接起来,实现数码管的动态显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:QUARTUS II 软件使用及组合电路设计仿真实验目的:学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL源文件的设计与波形仿真等基本内容。
实验内容:1.四选一多路选择器的设计基本功能及原理:选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。
四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)与s(1)及一个信号输出端y。
当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。
逻辑符号如下:程序设计:软件编译:在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的就是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示分析:由仿真图可以得到以下结论:当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。
符合我们最开始设想的功能设计,这说明源程序正确。
2.七段译码器程序设计基本功能及原理:七段译码器就是用来显示数字的,7段数码就是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理与运算都就是2进制的,所以输出表达都就是16进制的,为了满足16进制数的译码显示,最方便的方法就就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目的。
输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
数码管的图形如下七段译码器的逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上七段译码器的VHDL源程序后就可以对它进行编译了,编译的最终目的就是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示:分析:由仿真的结果可以得到以下结论:当a=0(0000)时led7=1000000 此时数码管显示0; 当a=1(0001)时led7=1111001 此时数码管显示1; 当a=2(0010)时led7=0100100 此时数码管显示2; 当a=3(0011)时led7=0110000 此时数码管显示3; 当a=4(0100)时led7=0011001 此时数码管显示4; 当a=5(0101)时led7=0010010 此时数码管显示5; 当a=6(0110)时led7=0000010 此时数码管显示6; 当a=7(0111)时led7=1111000 此时数码管显示7; 当a=8(1000)时led7=0000000 此时数码管显示8; 当a=9(1001)时led7=0010000 此时数码管显示9; 当a=10(1010)时led7=0001000 此时数码管显示A; 当a=11(1011)时led7=0000011 此时数码管显示B; 当a=12(1100)时led7=1000110 此时数码管显示C;当a=13(1101)时led7=0100001 此时数码管显示D;当a=14(1110)时led7=0000110 此时数码管显示E;当a=15(1111)时led7=0001110 此时数码管显示F;这完全符合我们最开始的功能设计,所以可以说明源VHDL程序就是正确的。
实验心得:通过这次实验,我基本掌握了QUARTUS II软件的使用,也掌握了软件工程的建立,VHDL源文件的设计与波形仿真等基本内容。
在实验中,我发现EDA这门课十分有趣,从一个器件的功能设计到程序设计,再到编译成功,最后得到仿真的结果,这其中的每一步都需要认真分析,一遍又一遍的编译,修改。
当然,中间出现过错误,但我依然不放弃,一点一点的修改,验证,最终终于出现了正确的仿真结果,虽然有一些毛刺,但就是总的来说,不影响整体的结果。
实验二:计数器设计与显示实验目的:(1)熟悉利用QUARTUS II中的原理图输入法设计组合电路,掌握层次化的设计方法;(2)学习计数器设计,多层次设计方法与总线数据输入方式的仿真,并进行电路板下载演示验证。
实验内容:1.完成计数器设计基本功能及原理:本实验要设计一个含有异步清零与计数使能的4位二进制加减可控计数器,即有一个清零端与使能端,当清零端为1时异步清零,即所有输出值都为0,当使能端为0时,计数器停止工作,当使能端为1时,正常工作,由时钟控制。
另外,还应该有一个控制端,当控制端为0时,进行减法运算,当控制端为1时,进行加法运算。
输出端有输出值与进位端,当进行加法运算时,输出值递增,当减法运算时,输出值递减,同时进位端进行相应的变化。
4位二进制加减计数器的逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上4位二进制加减计数器的VHDL源程序后就可以对它进行编译了,编译的最终目的就是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下:分析:由仿真图可以得到以下结论:当enable端为0时,所有数值都为0,当enable端为1时,计数器正常工作;当reset端为1时,异步清零,所有输出数值为0,当reset端为0时,正常工作;当updown端为0时,进行减法运算,当updown为1时,进行加法运算;另外,当程序进行减法运算时,出现借位时,co为1,其余为0,当进行加法运算时,出现进位时,co为1,其余为0。
图中所有的功能与我们设计的完全一样,所以说明源程序正确。
2.50M分频器的设计基本功能及原理:50M分频器的作用主要就是控制后面的数码管显示的快慢。
即一个模为50M的计数器,由时钟控制,分频器所有的端口基本与上述4位二进制加减计数器的端口一样,原理也基本相同。
分频器的进位端(co)用来控制加减计数器的时钟,将两个器件连接起来。
50M分频器的逻辑符号如下:程序设计:软件编译:在编辑器中输入并保存了以上50M分频器的VHDL源程序后就可以对它进行编译了,编译的最终目的就是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:结果如下:上图为仿真图的一部分,由于整个图太大,所以显示一部分即可,其余部分如图以上图规律一直递增,直到50M为止,然后再重复,如此循环。
上图就是部分输出的显示,由于整个图太大,所以只显示部分,其余部分如图递增。
分析:由仿真图可以瞧出,当reset为0,enable为1时(因为本实验中计数器的模值太大,为了尽可能多的观察出图形,可让reset一直为0,enable一直为1,即一直正常工作),输出值由0一直递增到50M,构成一个加法计数器,与我们设计的功能一致。
3.七段译码器程序设计基本功能及原理:七段译码器就是用来显示数字的,7段数码就是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理与运算都就是2进制的,所以输出表达都就是16进制的,为了满足16进制数的译码显示,最方便的方法就就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目的。
输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
七段译码器的逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上七段译码器的VHDL源程序后就可以对它进行编译了,编译的最终目的就是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示:分析:具体分析与实验一中七段译码器的分析相同,在此不再赘述。
计数器与译码器连接电路的顶层文件原理图:原理图连接好之后就可以进行引脚的锁定,然后将整个程序下载到已经安装好的电路板上,即可进行仿真演示。
实验心得:经过本次试验,我学到了很多。
首先,我加强了对QUARTUS II软件的掌握;其次,我掌握了电路图的顶层文件原理图的连接,学会了如何把自己设计的程序正确的转化为器件,然后正确的连接起来,形成一个整体的功能器件;最后,我学会了如何安装以及如何正确的把完整的程序下载到电路板上,并进行演示验证。
实验三:大作业设计(循环彩灯控制器)实验目的:综合应用数字电路的各种设计方法,完成一个较为复杂的电路设计。
实验内容:流水灯(循环彩灯)的设计设计任务:设计一个循环彩灯控制器,该控制器可控制10个发光二极管循环点亮,间隔点亮或者闪烁等花型。
要求至少三种以上花型,并用按键控制花型之间的转换,用数码管显示花型的序号。
基本原理:该控制器由两部分组成,一部分就是一个50M的分频器,其主要用来控制花色变化的快慢;另一部分就是一个彩灯控制器,该彩灯控制器可由两个开关控制花型的序号,10个输出分别控制10个发光二极管的亮暗,当输出为1时,该发光二极管亮,输出为0时,该二极管灭。
将分频器的co端用来控制彩灯控制器的时钟,将两个器件连接起来。
1.分频器的设计50M分频器与实验二中的分频器一样,这里不再赘述。
2、彩灯控制器的设计基本原理:该彩灯控制器由时钟控制,reset异步清零,enable当做使能端,由两个开关do(0-1)来控制选择不同的花型,10个输出端lig(0-9)来控制10个LED灯的亮灭。
因为用了两个开关来控制花型,所以一共有4种花色。
彩灯控制器的逻辑符号:程序设计:3.七段译码器的设计七段译码器就是用来显示不同花型的序号的,其设计与实验一中的设计一样,这里不再赘述。
循环彩灯控制器的原理图:仿真波形如下:第一种花型:第二种花型:第三种花型:第四种花型:仿真分析:EDA实验报告将以上仿真波形图与源程序对比,我们可以瞧到,仿真出来的波形与我们设计的功能一致,这说明源VHDL程序就是正确的。
实验心得:本次试验就是在没有老师指导的情况下自己完成的,我在参考了网上的程序的情况下,最终成功的设计并正确的演示出了循环彩灯的不同花型。
通过本次试验,我真正的体会到了DEA这门课的乐趣,也发现它对我们的学习与生活带来很大的方便。