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')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。
(此文档为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时,输出才复位。