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。
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技术实验报告

EDA技术实验报告1. 背景介绍EDA(Exploratory Data Analysis)是指探索性数据分析,是数据科学和机器学习中一项重要的任务。
通过EDA技术,我们可以对数据集进行可视化和统计分析,从而深入了解数据的特征和结构,为后续的数据处理和建模提供指导。
2. 实验目的本实验旨在通过使用EDA技术来分析一个给定的数据集,并从中获取有价值的信息。
通过实践,我们将深入了解EDA技术的应用和优势。
3. 实验步骤步骤1:导入数据首先,我们需要将实验所需的数据导入到Python的数据分析库中。
我们可以使用pandas库读取数据集,并将其存储为DataFrame对象,以便后续的分析和处理。
import pandas as pd# 读取数据集data = pd.read_csv('data.csv')步骤2:数据概览在进行数据分析之前,我们先要对数据进行整体的了解。
我们可以通过以下几个步骤来获取数据的概览信息:1.查看数据的前几行,了解数据的结构和格式。
data.head()2.查看数据的基本统计信息,包括均值、标准差、最小值、最大值等。
data.describe()3.检查数据中是否存在缺失值或异常值。
data.isnull().sum()步骤3:数据可视化EDA技术的核心之一是数据可视化。
通过可视化数据,我们可以更直观地理解数据的分布和关系。
下面是几种常用的数据可视化方法:1.直方图:用于展示数值型数据的分布情况,可以帮助我们了解数据的集中趋势和离散程度。
data['column'].plot.hist()2.散点图:用于展示两个数值型变量之间的关系,可以帮助我们发现数据的相关性。
data.plot.scatter(x='column1', y='column2')3.条形图:用于展示类别型数据的分布情况,可以帮助我们比较不同类别之间的差异。
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实验报告

EDA实验报告一、实验目的本实验旨在通过使用EDA(数据探索性分析)技术,进一步了解和分析所研究数据的特征、分布、关系以及可能存在的异常值等,从而为后续的数据建模和决策提供更加准确的依据。
二、实验步骤1. 数据收集与加载从数据源中获取所需数据集,并使用相应的数据加载工具将数据集导入到实验环境中。
多种数据源包括文件、数据库、API请求等方式均可。
2. 数据检查与预处理对导入的数据进行初步检查,包括数据类型、缺失值、异常值等方面的处理。
根据具体需求,对缺失值可以进行填充或删除操作,对异常值可以通过替换、删除或者修复的方式进行处理。
3. 数据探索性分析a) 描述性统计分析对各个变量进行描述性统计,包括计算均值、中位数、标准差等指标,以直观地了解数据的分布和变异程度。
b) 单变量分析对每个变量进行分析和探索,绘制直方图、箱线图、概率密度图等,以帮助我们了解变量的分布情况、异常值等。
c) 多变量分析使用散点图、柱状图、热力图等方式,对不同变量之间的关系进行分析。
可以通过相关性分析、协方差矩阵等方法来探索变量之间的线性关系。
4. 结果可视化在数据分析过程中,可以使用适当的可视化方法将分析结果直观地展示出来,如绘制折线图、散点图、热力图等。
可视化可以更好地理解数据的特征和趋势。
5. 异常检测与处理在探索性分析过程中,发现异常值后,需要进一步分析和决定如何处理它们。
可以采用剔除、修复等方式,使得数据能够更加符合实际情况。
6. 相关性分析对于关键变量之间的相互关系,可以使用相关性分析等统计方法来衡量它们的相关程度。
这可以帮助我们理解变量之间的影响和作用,以及它们与问题或目标变量之间的关系。
三、实验结果通过对所研究数据集的EDA实验,我们得出以下结论:1. 数据集的缺失值情况较为严重,需要进行适当的处理,以避免因缺失数据引起的结果不准确或失真的问题。
2. 变量A和变量B之间存在较强的正相关关系,即当A增加时,B 也会相应地增加;变量C则与变量A和B之间的关系较弱。
EDA实验报告

姓名:郭灵芝学号: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实验报告 (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原理及应用 实验报告

一.基础部分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作为顶层文件中的七段数码管的时钟进行驱动刷新。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告课程名称:EDA实验实验题目:EDA实验总结学生姓名:裴彬彬学号:20101050045物理科学技术学院物理系2010 级电子科学与技术专业指导教师:陈永康实验时间:2013 年实验地点:物科学院3414一:3-8译码器实验程序:module no1(y,en,a) ;output [7:0]y ;input en ;input [2:0]a;reg[7:0] y ;always @ (en or a)if (!en)y = 8'b1111_1111 ;elsecase(a)3'b000 : y = 8'b1111_1110 ;3'b001 : y = 8'b1111_1101 ;3'b010 : y = 8'b1111_1011 ;3'b011 : y = 8'b1111_0111 ;3'b100 : y = 8'b1110_1111 ;3'b101 : y = 8'b1101_1111 ;3'b110 : y = 8'b1011_1111 ;3'b111 : y = 8'b0111_1111 ;default : y = 8'bx ;endcaseendmodule波形:实验总结:1.编程中在使用CASE语句时,容易将ENDCASE语句忘掉,导致程序错误。
2.在文件名必须与VHDL文件中的设计实体名保持一致。
二:4位并行乘法器实验程序:module no2(a,b,y);input [3:0]a;input [3:0]b;output [7:0]y;assign y=a*b;endmodule波形:实验总结:本实验学习了assign语句的使用方法和使用条件。
三:补码生成实验程序:module no3 (a,y);input [7:0]a;output [7:0]y;reg [7:0]y;always@(a[7])beginif(a[7]==0)y=a;elsey={a[7],~(a[6:0])+1};endendmodule波形:实验总结:在验证结果的过程中,对于二进制的补码转换过程中容易产生错误,但是只要仔细对比就会发现转换过程无误。
四:32位任意分频器实验程序:module no4 (clk,din,out,load);input clk,load;input [3:0]din;output out ;reg [3:0]q1,q2;reg out;always@(posedge clk)beginif(load==0)q1<=din;else if(q2==q1&&q2!=0)beginout<=1'b1;q2<=0;endelsebeginout<=1'b0;q2<=q2+1;endendendmodule波形:实验总结:通过此次实验熟练掌握了 QuartusII 的设计流程和对verilog 语言的理解法分析能力。
也了解到一些关于数控分频器的原理、对数控分频器的分析和测试方法。
五:T触发器实验程序:module no5 (in1,clk,y);input in1,clk;output y;reg y;always@(posedge clk)if(in1==1)y=!y;elsey=y;endmodule波形:实验总结:调试程序时程序有很多错误,主要是文件名、实体名和触发器的顶级实体名不一致导致程序进行仿真错误,把工程名改为no5就行了。
六:计数器实验程序:module no6(in,out,clk);input in,clk;output [3:0]out;reg [3:0] out;always@(posedge clk)beginif(in==1)out=0;elseout=out +1;endendmodule波形:实验总结:这次试验要求我们必须有耐心,因为整个过程中会犯很多错误,我们必须静下心来仔细检查,发现并改正错误,错误面前我们必须保持冷静的头脑,不能急躁,严格按照已定步骤走,有计划,有目的。
七:多位数值比较器实验程序:module no9(a,b,out);input[2:0]a;input[2:0]b;output out;reg out;always@(a,b)beginif(a[2]>b[2])out=1;else if (a[2]<b[2])out=0;else if(a[1]>b[1])out=1;else if(a[1]<b[1])out=0;else if(a[0]>b[0])out=1;else if(a[0]<b[0])out=0;else out=1'hz;endendmodule波形:实验总结:一位数值比较器原理图:八.8位全加器的设计实验程序:module Adder8Bit(a,b,cin,sum,cout);input[7:0]a,b;input cin;output[7:0] sum;output cout;wire c;HA p0(a[3:0],b[3:0],cin,sum[3:0],c);HA p1(a[7:4],b[7:4],c,sum[7:4],cout);Endmodule波形图:实验总结:本实验利用两个四位全加器实现一个全加器,学习掌握了例化语句的编程和使用方法,例化语句的编程更加简单。
八:Moore状态机实验程序:module no13 (out,in,clk,rst);output[3:0] out;input[1:0] in;input clk,rst;reg [3:0]out;reg [1:0] nq,q;parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;always@(posedge clk or negedge rst)beginif(rst==0)nq<=0;elsenq<=q;endalways@(q or nq)begincase(nq)s0:begin if(in==0)q=s1;else q=s0 ;ends1:begin if(in==1)q=s2;else q=s1 ;ends2:begin if(in==2)q=s3;else q=s2 ;ends3:begin if(in==3)q=s0;else q=s3 ;enddefault:q<=s0;endcasecase(q)s0:out<=4'b0001;s1:out<=4'b0010;s2:out<=4'b0100;s3:out<=4'b1000;default:out<=4'b0001;endcaseendendmodule波形:实验总结:本次试验我通过 V erilog 硬件语言来编写摩尔型有限状态机和米勒型有限状态机,并掌握了采用有限状态机来产生各种控制信号的原理,以及熟悉如何选用合适的有限状态机进行电路设计,通过实验进一步了解原理图编辑方法和仿真方法。
九.数字钟实验程序:module mycnt60(clr,clk,upkey,downkey,selout,q,c);input clk,clr,upkey,downkey;input [1:0] selout;output[7:0] q;output c;reg c;reg[7:0] q;wire new_clk1,ckb,ckc,ckd,cko;assign new_clk1=clk|((!selout[0]&selout[1])&(upkey|downkey));LCELL AA(new_clk1,ckb);LCELL BB(ckb,ckc); LCELL CC(ckc,ckd); LCELL DD(ckd,cko);initial c=0;always @(posedge cko or negedge clr )begin if(!clr) q=8'h00;else beginif(selout==2) begin if(upkey)beginif(q==8'h59) q=8'h00;else if(q==8'h?9) q=q+4'h7;else q=q+1;endelse if(downkey)beginif(q==8'h00) q=8'h59;else if(q==8'h?0) q=q-4'h7;else q=q-1;endendelsebeginif(q==8'h59) begin q=8'h00;c=1;endelse if(q==8'h?9) begin q=q+4'h7;c=0;endelse begin q=q+1;c=0;endendendendendmodule波形:实验总结:通过对数字钟的设计到成功是耗时最长的,但也是学到知识点最多,收获最多的。
参照前人的成功经验,再加上自己的学习心得,并最终调试成功,非常开心!觉得学到有用的东西,很实用。
对数字系统设计有了更深层次的了解,对数字电路也有了知识的补充与扩充!十.数字信号发生器实验程序:module dds(f_clk,p,choose,data); input [5:0] p;input[1:0] choose;input f_clk;output [7:0] data;wire [7:0]data;reg [5:0] addr,address;reg [5:0] i;reg f_out;initialbegini<=0;addr<=0;f_out<=0;endalways @(posedge f_clk)beginif(i==p)begini=0;f_out=~f_out;endelsei=i+1;endfunction [7:0] romout;input[5:0] address;case(address)0 : romout = 10;1 : romout = 17;2 : romout = 15;3 : romout = 17;4 : romout = 10;5 : romout = 3;6 : romout = 5;7 : romout = 3;8 : romout = 3;9 : romout = 3;10: romout = 3;11: romout = 3;12: romout = 1;13: romout = 1;14: romout = 1;15: romout = 1;16 : romout = 0;17 : romout = 5;18 : romout = 10;19 : romout = 15;20 : romout = 20;21 : romout = 25;22 : romout = 30;23 : romout = 35;24 : romout = 35;25 : romout = 30;26 : romout = 25;27 : romout = 20;28 : romout = 15;29 : romout = 10;30 : romout = 5;31 : romout = 0;default : romout = 10'hxx; endcaseendfunctionalways@(posedge f_out) beginif(addr==8)addr=0;elseaddr=addr+1;case(choose)0: address=addr;1: address=addr+8;2: address=addr+16;3: address=addr+24; endcaseendassign data = romout(address); endmodule波形:1.正弦波示意图:(choose=0时的波形数值)2.方波示意图:(choose=1时的波形数值)3.正三角波示意图:(choose=2时的波形数值)4.反三角波示意图:(choose=3时的波形数值)实验总结:在测试和调整程序时发现一些容易犯错的问题:第一、用case语句取代了定义ROM造成了数据开始并没有固化在ROM中而是从程序中写入再读出。