EDA技术实验报告
- 格式:doc
- 大小:602.00 KB
- 文档页数:39
EDA技术与应用实验报告一、实验目的1、熟悉QUARTEUS-Ⅱ软件的使用方法,和实现FPGA电路设计的一般流程。
2、了解VHDL语言编程。
3、了解基本的自顶向下模块化设计思想。
4、学习用FPGA实现直接数字频率合成器(DDS)的设计。
二、实现内容1.利用DDS的方案,产生一个正弦波输出,频率可控。
2.利用DDS产生调制信号和载波信号,并根据所学的高频电子线路知识产生标准调相波。
三、实验原理DDS即数字合成器,是一种新型的频率合成器。
具有相对带宽大,频率转换时间短,分辨率高和相位连续可调等优点,很容易实现频率,相位和幅度的调制,广泛应用于通信领域。
DDS的基本结构如下图所示,主要有相位累加器,相位调制器、正弦波数据表(ROM)和D/A转换器构成。
相位累加器由N位加法器和N位寄存器构成。
每来一个时间clock,加法器就将频率控制字forword与累加寄存器输出的累加相位数据相加,相加的结果又反馈至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,相位累加器便把频率控制字累加一次,相位累加器输出的数据就是合成信号的的相位,相位累加器的溢出频率就是DDS输出的信号频率。
用相位累加器输出的数据作为波形存储器(ROM)的相位采样地址,这样就可把存储在波形存储器内的波形采样值(二进制编码)经查表找出,完成相位到幅度的转换。
波形存储的输出送到D/A的转换器,由D/A转换器将数字信号转换成模拟线号输出,DDS 信号的流程示意图如图所示:CLOCKDDS的基本结构图DDS工作流程图由于相位累加器为N位,相当于把正弦信号在相位上的精度定位N位(N 的取值范围一般为24—32),所以分辨率为1/2^N。
若系统时钟频率的Fclk,频率控制字fword为1,则输出频率为Fout=Fclk/2^N,这个频率相当于“基频”。
若fword为B,则输出频率为:Fout=(B*Fclk)/2^N当系统输出时钟频率Fclk不变时,输出信号频率由频率控制字M所决定。
EDA技术应用实训报告1. 引言探索性数据分析(Exploratory Data Analysis,简称EDA)是一种数据分析方法,旨在通过可视化和统计技术来了解数据集的特征、检查数据的质量,并发现其中隐藏的模式和关系。
EDA在数据科学领域应用广泛,为后续的数据建模和预测提供了基础。
本报告旨在应用EDA技术来分析一个实际数据集,并展示其中的步骤和方法。
2. 数据集介绍2.1 数据来源本实训使用的数据集来自于某电子商务网站的用户行为日志。
数据包括用户ID、时间戳、用户行为类型、商品ID等信息。
2.2 数据预处理在进行EDA之前,我们进行了一些数据预处理的步骤,包括:•去除重复值•处理缺失值•日期格式转换和处理•数据类型转换等经过预处理后,我们得到了干净的数据集用于后续的EDA分析。
3. EDA方法和步骤本次实训的EDA分析过程包括以下几个步骤:3.1 数据探索与可视化首先,我们对数据集进行了整体的数据探索,包括数据的基本统计特征、数据的分布情况等。
我们使用了Python中的pandas库和matplotlib库进行数据可视化,绘制了柱状图、散点图、箱线图等,以便更好地理解数据集的特征。
3.2 关联分析在数据探索的基础上,我们进行了关联分析,以了解不同变量之间的相关性。
我们使用了Python中的seaborn库和corr函数来计算变量之间的相关系数,并绘制了热力图来展示相关性。
通过关联分析,我们发现了一些变量之间显著的相关性,这对于后续的特征选择和建模有很大的帮助。
3.3 异常值检测在进行EDA之前,我们对数据集进行了异常值检测。
我们使用了Python中的箱线图和散点图等可视化方法来检查数据中存在的异常值。
通过这些方法,我们成功识别出了一些数据集中的异常值,并对其进行了处理。
3.4 特征工程在对数据集进行了基本的探索和分析后,我们进行了一些特征工程的操作,以提取和构造新的特征。
我们使用了Python中的numpy库和pandas库来进行特征工程操作,包括特征选择、特征缩放、特征变换等。
一、EDA技术的最新发展应用高度发达的信息化社会离不开电子产品的进步,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。
上世纪90 年代,科学家积极的探索着新的电子电路的设计方法,希望可以通过软件编程而对硬件结构和工作方式进行重构,从而使硬件设计可以如同软件设计那样方便快捷,正是这种理念促生了EDA 技术的出现。
具体的说EDA 技术就是以计算机为工具,在EDA 技术的平台上,用硬件描述语言VHDL 完成设计文件,然后由计算机自动完成逻辑编译,化简,分割,综合,优化,布局,布线和仿真,直到对于特定目标芯片的适配编译,逻辑映射和编程下载等工作。
这一技术用软件设计硬件,可以现场编程,在线升级,它的整个系统就集成在一个小小的芯片上,功耗低,可靠性高,使电路设计的效率得到了极大的提高,而且它有很好的移植性,非常适合分工设计和团体协作。
严格的说,EDA 技术是微电子技术和现代电子设计技术的结合, EDA 技术在硬件方面具体的应用体现在大规模集成电路制造技术ASIC测试和封装技术,IC 版图设计技术,FPGA/CPLD 编程下载技术以及自动测试技术等,而对于现代电学方向它也涵盖了电子线路设计的理论,设计数字信号处理的理论,数字系统建模及优化技术等理论。
有目共睹的是在现代技术中,电子技术始终处于所有科学技术发展的最前端,而EDA 技术表达和实现了现代电子理论设计,推动着科技的发展。
所以EDA 技术并不仅仅是一门学科分支,它其实更应该被称为一门综合性的学科,渗透到各个学科中消除了软硬件互不相通的障碍,成为新的电子技术和应用技术的发展方向。
EDA 技术最基本的特征,得从十年前开始,那时电子设计思路选用的是集成电路“自底向上”的构造系统,当人们探索出高层次设计的“自顶向下”的全新设计方法后,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。
实验一五人表决器设计一、实验目的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 五人表决器设计仿真图可知,设计基本符合题目要求。
实验一:五人表决器一、程序清单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实验总结报告本文是关于EDA实验的总结报告。
EDA全称Exploratory Data Analysis,即探索性数据分析。
本次实验旨在通过对数据的探索性分析,更好地理解数据的特征,为后续的数据建模和分析提供基础。
一、实验目的本次实验的主要目的是通过探索性数据分析,全面了解数据的情况和属性,包括数据的分布、离群值、缺失值等等,为后续的数据处理和建模提供基础。
二、实验数据实验数据为一份包含39个字段的广告数据集,该数据集每行为一条记录,包含了广告的各项属性和指标。
数据集的字段包括:序号、时间、广告类型、广告尺寸、广告位置、出价、曝光量、点击量、点击率等。
三、实验步骤1. 导入数据首先,我们需要读取并分析数据,以确定数据集的基本特征。
在本次实验中,我们使用了Python中的pandas库来读取和处理数据。
2. 数据探索基于导入的数据,我们需要进行数据探索,分析数据的各种特征和属性。
具体包括以下几点:(1)统计数据基本特征,包括字段数量、数据类型、缺失值、异常值等等;(2)分析数据的分布情况,包括分布密度、分布频率等等;(3)分析数据的标签分布情况,包括正负样本比例、标签分布情况以及样本类别的不平衡性等等;(4)探索数据之间的关联性,包括特征之间的相关性、关联度等等;(5)对数据进行可视化展示,包括直方图、散点图、箱线图等等。
通过对数据的探索,我们可以更好地了解数据的基本特征,挖掘数据中的规律和特征。
四、实验结果通过对数据的探索性分析,我们得到了以下结论:(1)数据特征经过初步分析可以看出,该数据集包含39个字段,其中有19个字段为数值型特征,16个字段为分类型特征,以及4个字段为时间型特征。
通过观察可以发现,该数据集中的异常值较少,而缺失值相对较多。
(2)数据分布经过数据分布的分析,我们发现该数据集的分布情况呈现长尾分布,即数据中存在大量较小的值和少量的较大的值。
(3)标签分布通过对数据集中的标签进行分析,我们发现整个数据集的正样本比例约为30%,而负样本比例为70%。
实验一单级放大电路的设计与仿真一、实验目的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技术及应用实训报告
1.设计自动化技术
设计自动化技术(Design Automation)是一项将新科技与新技术结合在一起的实际工程学科,它将工程设计和制造过程的各个方面进行自动建模、自动仿真、自动集成,从而实现对制造技术的模拟和控制,实现优化系统设计和提高设计效率的目的。
设计自动化是达到设计自动化的途径之一,它强调了“从设计中抽象出规则、流程、模型和算法”,并对它们进行自动化,从而克服了手动设计中的过程繁琐、重复劳动的缺点,为设计师提供了更快、更准、更节劳的方法。
2、EDA技术
EDA(电子设计自动化)是在电子产品设计的整个流程中使用计算机软件和硬件工具来实现设计自动化的过程,也称之为电子产品设计自动化(EDA)。
EDA技术已经发展到成熟阶段,&&主要用于电路板设计、电路仿真、CAD/CAM设计、电路布线和测试等领域。
实验一组合电路的设计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')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。
实验一:不同设计输入方式比较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、实验内容用元件例化语句方法和原理图方法设计四位全加器。
实验三 含异步清0和同步时钟使能的4位加法计数器的设计一、实验目的学习时序电路的设计、仿真和硬件测试,学习用VHDL 编程设计电路。
二、实验原理图3-1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,图中间是4位锁存器;rst 是异步清信号,高电平有效;clk 是锁存信号;D[3..0]是4位数据输入端。
当ENA 为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA 为'0'时将"0000"加载于锁存器。
三、实验仪器设备和材料清单微型计算机 ZYE1502D 型EDA 实验箱 EPF10K10LC84-4下载板四、实验内容 新建项目新建VHDL 文件 输入VHDL 代码编译 新建矢量波形图 元件封装 设置相关值 仿真 编译 下载测试开关、按键的位置AS1:(2)、(3)、(4)档拨向上(ON );(1)档拨向下图3-1 含计数使能、异步复位的4位加法计数器LJ1:跳线按2、3脚TJ1:设为1HZVHDL代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B ISPORT (CLK : IN STD_LOGIC;RST : IN STD_LOGIC;ENA : IN STD_LOGIC;OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINP_REG:PROCESS(CLK, RST, ENA)BEGINIF RST = '1' THEN CQI <= "0000";ELSIF CLK'EVENT AND CLK = '1' THENIF ENA = '1' THEN CQI <= CQI + 1;END IF;END IF;OUTY <= CQI ;END PROCESS P_REG; --进位输出COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3);END behav;五、仿真波形图六、数据分析在第十六个时钟上升沿还没到的时候,进位输出出现瞬时高电平,储存器造成的。
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、了解格雷码变换的原理。
实验一单级放大电路的设计与仿真一、实验内容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% 。
一.基础部分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技术 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 实验的主要目的是熟悉电子设计自动化(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)将译码器与计数器连接起来,实现数码管的动态显示。
(此文档为word格式,下载后您可任意编辑修改!)实验一利用原理图输入法设计4位全加器一、实验目的:掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方法。
通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。
二、实验原理:一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。
1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。
半加器h-adder由与门、同或门和非门构成。
四位加法器由4个全加器构成三、实验内容:1. 熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。
QuartusII设计流程见教材第五章:QuartusII应用向导。
2.设计1位全加器原理图(1)生成一个新的图形文件(file->new->graphic editor)(2)按照给定的原理图输入逻辑门(symbol->enter symbol)(3)根据原理图连接所有逻辑门的端口,并添加输入输出端口(4)为管脚和节点命名:在管脚上的PIN_NAME处双击鼠标左键,然后输入名字;选中需命名的线,然后输入名字。
(5)创建缺省(Default)符号:在 File菜单中选择 Create Symbol Files for Current File 项,即可创建一个设计的符号,该符号可被高层设计调用。
3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形文件(file->new->Other Files->Vector Waveform File),保存后进行仿真(Processing ->Start Simulation),对4位全加器进行时序仿真。
给出波形图,并分析仿真结果是否正确。
原理图:仿真波形:1位全加器:原理图:仿真波形:原理图:仿真波形:4位全加器仿真结果正确:例:0011(A)+0111(B)+0(CI)结果为1010(S),进位CO为0。
5.思考如何在原理图中输入一个总线,并与其他总线连接?先选中细线,然后右击,选”bus line”,总线是以粗线条表示。
与其他总线连接:例如一根8位的总线 bus1[7..0]欲与另三根分别为1、3、4个位宽的连线相接,则它们的标号可分别表示为bus1[0],bus1[3..1],bus1[7..4]。
实验二简单组合电路的设计一、实验目的:熟悉QuartusII VHDL文本设计流程全过程。
学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
二、实验原理VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE),本次实验是用VHDL设计一个简单的数字组合逻辑电路,并结合QuartusII 环境和实验电路进行硬件测试。
三、实验内容:1)根据实验一中一位全加器的电路原理图,改用VHDL语言文本输入方法,设计一位全加器,要求采用结构化的描述方法。
设计完成后,利用QuartusII集成环境进行时序分析、仿真,记录仿真波形和时序分析数据。
2)用VHDL语言设计一个四选一数据选择器电路。
要求先设计一个二选一数据选择器mux21,然后利用元件例化语句设计四选一数据选择器mux41,同样请给出时序分析数据和仿真结果。
3)硬件测试(选用器件 EPF10K10 Pin84)管脚锁定:1)一位全加器 a PIO23(IO19) 30 SW1b PIO24(IO20) 35 SW2ci PIO25(IO21) 36 SW3s PIO21(IO16) 27 LED10co PIO19(IO8) 29 LED122)四选一数据选择器 a1 PIO23 30 SW1a0 PIO24 35 SW2d3 PIO27 38 SW5d2 PIO28 39 SW6d1 PIO29 47 SW7d0 PIO30 42 SW8yout 29 LED12四、思考题比较原理图输入法和文本输入法的优缺点。
实验结果:一位全加器的VHDL描述:半加器的VHDL描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ,bin,cin :IN STD_LOGIC;cout,sum:out STD_LOGIC);END ENTITY f_adder;ARCHITECTURE fd1 OF f_adder ISCOMPUTER ,b=>bin,co=>d,so=>e);u2:,co=>f,so=>sum);u3: or2a PORT MAP(a=>d,b=>f,c=>cout);END ARCHITECTURE fd1;仿真波形:硬件测试结果及分析:ain PIN_233 SW1bin PIN_234 SW2cin PIN_235 SW3cout PIN_1 LED1sum PIN_2 LED2得结果正确。
四选一数据选择器的VHDL描述:二选一数据选择器的VHDL描述:ENTITY mux21a ISPORT (a,b:IN BIT;s:IN BIT;y:OUT BIT); END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINy<=a WHEN s='0' ELSE b;END ARCHITECTURE one;四选一数据选择器的VHDL描述:library ieee;use ieee.std_logic_1164.all;entity mux41a isport (d0,d1,d2,d3,a0,a1:in std_logic;yout:out std_logic);end entity mux41a;architecture fd1 of mux41a iscomponent mux21aport (a,b,s:in std_logic;y:out std_logic);end component;signal e,f:std_logic;beginu1:mux21a port map(a=>d0,b=>d2,s=>a1,y=>e); u2:mux21a port map(a=>d1,b=>d3,s=>a1,y=>f); u3:mux21a port map(a=>e,b=>f,s=>a0,y=>yout); end architecture fd1;仿真波形:硬件测试结果及分析:a1 PIN_233 SW1a0 PIN_234 SW2d0 PIN_235 SW3d1 PIN_236 SW4d2 PIN_237 SW5d3 PIN_238 SW6yout PIN_1 LED1此结果正确。
回答问题:原理图输入法的优点:1.设计者进行电子线路设计不需要增加新的相关知识;2.设计过程形象直观;3.由于设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用。
原理图输入法的缺点:1.图形文件兼容性差;2.随着电路设计规模的扩大,原理图输入描述方式必然引起一系列难以克服的困难,如电路功能原理的易读性下降,错误排查困难,整体调整和结构升级困难等;3.由于图形文件的不兼容性,性能优秀的电路模块的移植和再利用十分困难;4.由于在原理图中已确定了设计系统的基本电路结构和元件,留给综合器和适配器的优化选择的空间已十分有限,因此难以实现用户所希望的面积,速度以及不同风格的综合优化;5.在设计中,由于必须直接面对硬件模块的选用,因此行为模型的建立将无从谈起,从而无法实现真实意义上的自顶向下的设计方案。
但是HDL文本输入的设计方法,基本上克服了用原理图输入法存在的所有弊端,所以HDL 输入设计仍然是最基本、最有效和通用的输入方法。
实验三简单时序电路的设计一、实验目的:熟悉QuartusII的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。
二、实验原理时序逻辑电路是现代复杂数字电路的重要组成部分,往往占到整个设计的90%以上。
触发器是时序电路的基本单元,本实验中将涉及到边沿触发和电平触发两种电路结构,其中边沿触发是实际电路实现的主要方式。
三、实验内容1)设计一个上升沿触发的D触发器输入:D输出:Q触发时钟:CLK2)设计同步异步清零D触发器触发器有两种清零方式:同步——当触发沿到来时,若清零信号有效,则实现清零;异步——任何时候清零信号一旦有效,触发器马上清零,而不论触发沿是否到来。
在以上设计的D触发器基础上,加入清零端rst,分别实现同步和异步清零方式。
3)设计一个高电平有效的锁存器输入:D输出:Q触发:E电平触发的锁存器与沿触发的触发器不同之处在于当触发端处于有效电平时,输出等于输出,随输入变化;触发端无效时输出保持不变。
4)在QuartusII环境下对以上设计的模块进行编译,记录时序分析数据和仿真波形,并在实验电路上进行硬件测试。
管脚锁定: D PIO23 30 SW1CLK CLK1 43 频率源(35 SW2)Q PIO19 29 LED12四、问题1)在本次实验中你使用的VHDL描述方式是和实验二中一样的结构化描述还是行为级描述?这两种方式描述的编译出来的仿真结果是否相同?2)请在试验报告中分析和比较1)和3)的仿真和实测结果,说明两者之间的异同点。
实验结果:上升沿触发的D触发器的VHDL描述:library ieee;use ieee.std_logic_1164.all;entity d isport(CLK:in std_logic;D:in std_logic;Q:out std_logic);end;architecture bhv of d issignal q1:std_logic;beginprocess(CLK,q1)beginif CLK'event and CLK='1'then q1<=D;end if;end process;Q<=q1;end bhv;仿真波形:硬件测试结果及分析:CLK PIN_233 SW1D PIN_234 SW2Q PIN_1 LED1若SW2为1,当按下SW1时,LED1亮,此时若让SW2为0,再按下SW1,则LED1灭。
可知:当CLK上升沿到来时,输出Q就是D值。
故结果正确。
设计同步异步清零D触发器的VHDL描述:同步清零D触发器的VHDL描述:library ieee;use ieee.std_logic_1164.all;entity DT isport(clk,rst: in std_logic; D: in std_logic;Q: out std_logic);end ;architecture one of DT is signal Q1: std_logic;beginprocess(clk,rst,Q1)beginif clk'event and clk='1' then if rst='0' then Q1<=D;else Q1<='0';end if;end if;end process;Q<=Q1;end one;仿真波形:硬件测试结果及分析:CLK PIN_233 SW1D PIN_234 SW2rst PIN_235 SW3Q PIN_1 LED1若SW3为1,只有在按下SW1时,输出才复位。