EDA第一次实验

合集下载

EDA实验

EDA实验

实验一 PROTEL 99原理图的绘制一、实验目的(1)熟练掌握PROTEL99的基本操作。

(2)学会绘制电路原理图。

(3)掌握电路图的ERC校验、电路错误修改和网络表的生成。

二、实验内容(1)新建文档,设置参数的基本操作。

进入ADVANCED SCHEMATIC,新建一张原理图,并设置它的工作空间参数和文档参数。

其中,电路图大小设置为A4,横向放置,标题栏选择标准标题栏,栅格大小均选为20mil。

(2)装入元器件库。

执行相关命令,(3)放置元器件。

按照如图3-1所示,从元器件库中放置相应的元器件到电路图中,并对元器件做移动,旋转等操作,同时进行属性设置。

其中电容的封装采用RAD0.2,电阻的封装采用AXIAL0.4,各元器件的元器件标号及标称值均采用小四号宋体,完成后将文件存盘。

(4)全局修改。

利用SCH的全局修改功能,将图3-1中电阻的标号和标称值均由小四号宋体改为五号黑体,并将电阻的编号R*由大写改为小写r*,完成后将文件改名存盘。

(5)绘制电源电路图。

按照如图3-1所示,绘制电源电路的原理图,并填上正确的封装,完成后将文件存盘。

(6)对完成的电路图进行ERC校验,若有错误,则加以改正,直到校验无误(1)为什么要给元器件定义封装形式?是否所有原理图中的元器件都要定义封装形式?(2)放置元器件时系统提示没有打开元器件库,应如何解决?(3)使用网络标号时应注意哪些问题?(4)总线和一般连线有何区别?使用中应注意哪些问题?实验二单面板的制作一、实验目的(1)熟练掌握PCB 的基本操作。

(2)基本掌握PCB元器件库的编辑方法。

(3)掌握单面板的制作。

(4)绘制出电源PCB图(单面板)二、实验内容(1) 进入SCH ,打开在实验一中己完成的电源电路的原理图(图1-1),设置好电路图中各元器件的封装,执行相关菜单命令,生成此电路图的网络表。

(2) 新建一个PCB文件,打开标准元器件库,设置好工作空间参数和文档参数,其中信号层选择底层,将此文件更名为dydl.PCB保存.(3) 在禁止布线层上绘制电路版图的边框,给边框加上尺寸标注.(4) 调入电源电路的网络表,若网络表中存在错误,则加以修改,完全正确后,按下EXECUTE按钮确定.(5) 通过自动布局以及人工调整的方法,合理布局元器件,布局调整时应尽量减少飞线交叉。

南京理工大学EDA设计(一)实验报告

南京理工大学EDA设计(一)实验报告

(此文档为word格式,下载后您可任意编辑修改!)目录实验一单级放大电路的设计与仿真 (2)一、实验目的 (2)二、实验要求 (2)三、实验原理图 (2)四、实验过程及结果 (3)1、电路的饱和失真和截止失真分析 (3)2、三极管特性测试 (6)3.电路基本参数测定 (9)五、数据分析 (12)六、实验感想 (12)实验二差动放大电路的设计与仿真 (13)一、实验目的 (13)二、实验要求 (13)三、实验原理图 (13)四、实验过程及结果 (14)1、电路的静态分析 (14)2.电路电压增益的测量 (20)五、数据分析 (22)六、实验感想 (23)实验三反馈放大电路的设计与仿真 (23)一、实验目的 (23)二、实验要求 (23)三、实验原理图 (23)四、实验过程及结果 (24)1.负反馈接入前后放大倍数、输入电阻、输出电阻的测定 (24)2.负反馈对电路非线性失真的影响 (27)五、实验结论 (30)六、实验感想 (30)实验四阶梯波发生器电路的设计 (30)一、实验目的 (30)二、实验要求 (30)三、电路原理框图 (31)四、实验过程与仿真结果 (31)1.方波发生器 (31)2.微分电路 (32)3.限幅电路 (33)4.积分电路 (34)5.比较器及电子开关电路 (35)五、实验思考题 (37)六、实验感想 (38)写在后面的话对此次EDA设计的感想 (38)问题与解决 (38)收获与感受 (38)期望与要求 (38)实验一单级放大电路的设计与仿真一、实验目的1.掌握放大电路静态工作点的调整和测试方法2.掌握放大电路的动态参数的测试方法3.观察静态工作点的选择对输出波形及电压放大倍数的影响二、实验要求1.设计一个分压偏置的胆管电压放大电路,要求信号源频率10kHz(峰值1—10mV),负载电阻,电压增益大于80.2.调节电路静态工作点(调节偏置电阻),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。

EDA实验内容及要求

EDA实验内容及要求

EDA 实验题目实验一 MAXPLUS II软件开发环境的使用实验目的1.熟悉MAXPLUSII软件开发环境。

2.掌握EDA开发工具中数字逻辑电路的设计流程和基本步骤。

3.熟练掌握图形编辑器的使用方法。

4.熟练掌握一个设计的编译综合环节、器件设定与管脚绑定环节以及波形仿真环节。

实验内容与要求1.在图形编辑器中采用LPM图元设计一个4-16译码器,以decoder16.gdf命名保存。

将器件设定为EPM7128LC84-6。

输入D、C、B、A绑定到10,11,12,13管脚,输出Y0….Y15按顺序绑定到60至75管脚。

进行波形仿真,验证功能正确。

分析节点A到节点y15的最短延时。

(5分)2.在图形编辑器中,采用基本门电路设计一个一位的全加器,以FADDER.gdf命名保存。

器件设定为EPM7128LC84-6。

输入Ain、Bin、Cin(进位输入)分别绑定到Pin21、22、23,输出So、Co分别绑定到Pin41、42。

进行波形仿真验证其功能正确。

分析输入节点到输出节点的最短时间。

(5分)实验二图形编辑器与波形仿真器的综合使用(2)实验目的1.进一步熟悉MAXPLUSII软件开发环境与数字逻辑电路的设计流程和基本步骤。

2.掌握图形编辑器中总线的绘制与节点命名的方法,学习文本编辑器的使用。

3.熟练掌握输入时序的设计与编辑,学会通过波形仿真工具修改设计错误的技巧。

实验内容与要求1.在图形编辑器中设计一个3位的十进制加法计数器,以xxxcnt3.gdf命名保存(‘xxx’为您的姓名拼音首字母)。

器件设定为EPM7128LC84-6。

要求能够从0计数到999。

从999归零时产生一个高电平的报警信号。

进行波形仿真,验证功能正确。

分析此电路的最高计数频率。

(5分)2.修改这个计数器的归零值,使其计数到119就归零,增加异步清零功能,加法计数/减法计数控制功能。

(3分)3.在文本编辑器中使用VHDL语言设计一个D触发器,具有反向输出端。

EDA实验报告

EDA实验报告

EDA实验报告一、实验目的本实验旨在通过使用EDA(数据探索性分析)技术,进一步了解和分析所研究数据的特征、分布、关系以及可能存在的异常值等,从而为后续的数据建模和决策提供更加准确的依据。

二、实验步骤1. 数据收集与加载从数据源中获取所需数据集,并使用相应的数据加载工具将数据集导入到实验环境中。

多种数据源包括文件、数据库、API请求等方式均可。

2. 数据检查与预处理对导入的数据进行初步检查,包括数据类型、缺失值、异常值等方面的处理。

根据具体需求,对缺失值可以进行填充或删除操作,对异常值可以通过替换、删除或者修复的方式进行处理。

3. 数据探索性分析a) 描述性统计分析对各个变量进行描述性统计,包括计算均值、中位数、标准差等指标,以直观地了解数据的分布和变异程度。

b) 单变量分析对每个变量进行分析和探索,绘制直方图、箱线图、概率密度图等,以帮助我们了解变量的分布情况、异常值等。

c) 多变量分析使用散点图、柱状图、热力图等方式,对不同变量之间的关系进行分析。

可以通过相关性分析、协方差矩阵等方法来探索变量之间的线性关系。

4. 结果可视化在数据分析过程中,可以使用适当的可视化方法将分析结果直观地展示出来,如绘制折线图、散点图、热力图等。

可视化可以更好地理解数据的特征和趋势。

5. 异常检测与处理在探索性分析过程中,发现异常值后,需要进一步分析和决定如何处理它们。

可以采用剔除、修复等方式,使得数据能够更加符合实际情况。

6. 相关性分析对于关键变量之间的相互关系,可以使用相关性分析等统计方法来衡量它们的相关程度。

这可以帮助我们理解变量之间的影响和作用,以及它们与问题或目标变量之间的关系。

三、实验结果通过对所研究数据集的EDA实验,我们得出以下结论:1. 数据集的缺失值情况较为严重,需要进行适当的处理,以避免因缺失数据引起的结果不准确或失真的问题。

2. 变量A和变量B之间存在较强的正相关关系,即当A增加时,B 也会相应地增加;变量C则与变量A和B之间的关系较弱。

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告实验题目:数码管动态显示实验学院名称:专业:电子信息工程班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

二、设计任务及要求1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。

2、放慢扫描速度演示动态显示的原理过程。

三、系统设计1、整体设计方案数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。

如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。

虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。

2、功能模块电路设(1)输入输出模块框图(见图1)图1(2)模块逻辑表达(见表1)表1(数码管显示真值表)clk_1k dig seg↑01111111 C0↑10111111 F9注:数码管显示为01180121(3)算法流程图(见图2)(4)Verilog源代码module scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0]count; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule四、系统调试(1)仿真代码`timescale 1ns/1nsmodule scan_ledfz;reg clk_1k;reg[31:0] d;wire[7:0] dig;wire[7:0] seg;parameter dely=100;scan_led u1(clk_1k,d,dig,seg);always #(dely/2)clk_1k=~clk_1k;initial beginclk_1k=0;d=32'h01180134;#dely ;#dely ;#dely ;#dely ;#dely ;#(dely*20);#dely $finish;endinitial $monitor($time,,,"%b,%d,%h,%h",clk_1k,d,dig,seg); endmodulemodule scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0] count=3'b000; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule位码代码仿真代码`timescale 1ns/1nsmodule smg_tp; //测试模块的名字reg [2:0] c; //测试输入信号定义为reg型wire[7:0] dig; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒wei u1(c,dig); //调用测试对象initial begin //激励波形设定c=3'b0;#DEL Y c=3'b001 ;#DEL Y c=3'b010 ;#DEL Y c=3'b100 ;#DEL Y c=3'b101 ;#DEL Y c=3'b110 ;#DEL Y c=3'b111 ;#DEL Y $finish;endinitial $monitor($time,,,"dig=%d,c=%b ",dig,c); //输出格式i定义endmodulemodule wei(c,dig); //命名模块名字input[2:0] c;output[7:0] dig; //定义输入与输出reg[7:0] dig_r;reg[2:0] c_r; // 定义dig_r与c_r2个reg型数据assign dig=dig_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin c_r=c;case (c_r)3'b000:dig_r=8'b11111110; //c_r的数据变化而dig_r对于的数据变化3'b001:dig_r=8'b11111101;3'b010:dig_r=8'b11111011;3'b011:dig_r=8'b11110111;3'b100:dig_r=8'b11101111;3'b101:dig_r=8'b11011111;3'b110:dig_r=8'b10111111;3'b111:dig_r=8'b01111111;default: dig_r=8'b11111111;endcase //结束case语句end //结束always语句endmodule //结束程序译码器代码仿真代码`timescale 1ns/1nsmodule duan_tp; //测试模块的名字reg[3:0] a; //测试输入信号定义为reg型wire[7:0] seg; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒duan u1(a,seg); //调用测试对象initial begin //激励波形设定a=4'b0;#DELY a=4'b0001;#DELY a=4'b0010;#DELY a=4'b0011;#DELY a=4'b0100;#DELY a=4'b0101;#DELY a=4'b0110;#DELY a=4'b0111;#DELY a=4'b1000;#DELY a=4'b1001;#DELY a=4'b1010;#DELY a=4'b1011;#DELY a=4'b1100;#DELY a=4'b1101;#DELY a=4'b1110;#DELY a=4'b1111;#DELY $finish;endinitial $monitor($time,,,"seg=%d,a=%b",seg,a); //输出格式i定义endmodulemodule duan(a,seg); //命名模块名字input[3:0] a;output[7:0] seg; //定义输入与输出reg[7:0] seg_r;reg[3:0] a_r; // 定义seg_r与a_r2个reg型数据assign seg=seg_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin a_r=a;case(a_r) //七段译码4'b0000:seg_r = 8'hc0; //显示04'b0001:seg_r = 8'hf9; //显示14'b0010:seg_r = 8'ha4; //显示24'b0011:seg_r = 8'hb0; //显示34'b0100:seg_r = 8'h99; //显示44'b0101:seg_r = 8'h92; //显示54'b0110:seg_r = 8'h82; //显示64'b0111:seg_r = 8'hf8; //显示74'b1000:seg_r = 8'h80; ///显示84'b1001:seg_r = 8'h90; //显示94'b1010:seg_r = 8'h88; //显示a4'b1011:seg_r = 8'h83; //显示b4'b1100:seg_r = 8'hc6; //显示c4'b1101:seg_r = 8'ha1; //显示d4'b1110:seg_r = 8'h86; //显示e4'b1111:seg_r = 8'h8e; ///显示f endcase //结束case语句end //结束always语句endmodule //结束程序(2)仿真波形图(3)引脚图五、实验感想通过这次实验,让我学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

中国地质大学EDA实验报告

中国地质大学EDA实验报告

EDA实验报告基础实验实验一组合逻辑设计一、实验目的:1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。

2、掌握组合逻辑电路的静态测试方法。

3、初步了解quartusII原理图输入设计的全过程。

二、实验的硬件要求:1、主芯片:EP1K10TC100—32、输出:八个LED灯3、输入:DIP拨码开关3位三、实验器材:试验箱四、实验原理:三八译码器三输入,八输出。

当输入信号按二进制方式的表示为N时,输出端从零标记到八。

因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位有效的情况下,能表示所有的输入组合。

3-8译码器真值表五、实验步骤:1、打开quartusII 软件,选择file-new project wizard…建立工程,选择器件主芯片:EP1K10TC100—3 ,工程文件名为ym,2、新建Block diagram/schematic file程序3、在窗口绘制原理图:单击鼠标右键选择symbol,选择相应原件用鼠标拖入文件中编辑,绘制完成后保存原理图,将程序名改为ym,与工程名相同。

4、对程序进行编译,编译无误后,进行波形仿真完成后,进行管脚配置,并将程序下载到实验箱仿真波形5、实验电路连线与实验结果用拨码开关的低三位代表译码器输入,将之与配置好的管脚相连;用led灯代表译码器的输出,将之与配置好的管脚相连。

完成连接后,拨动拨档开关,观察led的发光状态与输入状态的对应关系是否与真值表中的情况相同。

经观察,led的发光状态符合真值表的描述。

六、试验心得试验中对quartusⅡ的操作不够熟悉,绘制原理图出现连线错误,以致绘制原理图速度慢。

通过实验熟悉了对软件的操作,掌握了建立工程的方法,绘制bdf文件的方法,了解了试验箱的使用。

实验二扫描显示电路的驱动一、实验目的:了解教学系统中8位七段数码管显示模块的工作原理,设计标准扫描驱动电路模块。

二、硬件要求:主芯片:EP1K10TC100-3,时钟源,八位七段数码显示管,四位拨码开关。

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技术实验操作步骤说明

Max+plus II 开发软件实验操作步骤说明:开发软件最好安装在C盘下,有些系统中将开发软件装在其他盘下不能正常工作。

1、新建设计文件夹:在Max+plus II安装路径下(即安装目录下)新建设计文件夹,用于存放设计文件,文件夹命名禁止使用中文。

2、打开软件:开始-》程序-》Max+plus II 10.2 baseline3、新建设计文件:(1)新建HDL输入文件file->new->text editor file(2)新建原理图输入文件file->new->graphic editor file4、输入设计源文件(1)文本文件中输入VHDL源程序:输入程序代码->保存文件到已建好的设计文件夹中注意:输入文本及符号时必须为英文输入状态注意:文件名必须与实体名(entity 后的标识符)一致,文件后缀为VHD(2)图形文件中输入电路设计原理图:(i)在原理图中调入库元件:在原理图输入界面下,单击右键,弹出菜单中选enter->symbol,弹出元件库对话框。

(ii)选择对应库(prim:基本逻辑元件库、mf:宏功能元件库、Mega_Lpm:参数可设置兆功能元件库)打开,选择所需库元件(注意输入输出信号需对应接输入输出引脚),点击ok放入原理图编辑区(iii)连接所有内部导线,双击输入输出引脚名,将所有输入输出端口信号命名(iv)保存文件到已建好的设计文件夹中注意:原理图输入文件名无特别要求,文件后缀为gdf5、将设计项目设置成工程文件(PROJECT):file->project->set project to current file6、选择目标器件:assign->device->选择与实验箱上下载板上同型号的器件。

实验箱上一般为acex1k系列中的ep1k30qc208-3 器件说明:如不作编程文件下载,此不可跳过7、调用编译器编译:Max+plus II->compiler->start说明:如编译有错误,则编译会终止并弹出编译出错信息提示说明:双击错误提示或单击提示后用locate在源文件中定位错误->修改错误->重新编译直到排除所有错误。

EDA实验七人表决器的操作步骤

写出了综合设计的第一个实验的详细步骤,主要是介绍用QuartusII软件设计由多个模块构成的数字系统的主要步骤,及注意事项。

希望对前几个实验未能完全掌握的同学有所帮助。

3.3.2实验内容基于QuartusII软件及VHDL语言实现七人表决器。

当参与表决的7人中有4个或4个以上赞同时,表决器输出“1”表示通过,否则输出“0”表示不通过,并显示赞成和反对的人数。

用7个电平开关作为表决器的7个输入变量,数码管显示人数,LED灯显示是否通过。

本实验4学时。

3.3.3实验仪器ZY11EDA13BE型实验箱。

3.3.4实验原理分析实验要求,七人表决器系统主要由两个模块构成:投票计数模块和数码管显示模块。

投票计数模块,用来统计赞成和反对的人数,数码显示模块以数码管动态扫描的形式,将赞成和反对的人数显示在数码管上。

实验具体步骤如下:一、建立项目(1)新建文件夹。

路径及文件名中不可出现汉字。

(2)新建项目。

项目取名为bjq7,特别强调的是项目名取好后,顶层文件名必须与项目名一致。

一个数字系统可以由多个模块构成,使所有模块连接在一起的总文件叫做顶层文件,只有顶层文件名可以且必须与项目名相同。

(3)选择芯片二、建立文件1.建立投票计数模块。

(1)新建VHDL文件(2)编辑VHDL程序。

投票计数模块输入为七个电平开关input,输出为同意的人数agree,反对的人数disagree,是否通过指示灯y,程序清单如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity BJQ isport(input:in std_logic_vector(6downto0);agree:out std_logic_vector(3downto0);disagree:out std_logic_vector(3downto0);y:out std_logic);end;architecture one of BJQ isbeginprocess(input)variable cnt:integer range0to7;variable cnt0:integer range0to7;begincnt:=0;for i in6downto0loopif input(i)='1'thencnt:=cnt+1;end if;end loop;cnt0:=7-cnt;if cnt>3then y<='1';else y<='0';end if;case cnt iswhen0=>agree<="0000";when1=>agree<="0001";when2=>agree<="0010";when3=>agree<="0011";when4=>agree<="0100";when5=>agree<="0101";when6=>agree<="0110";when7=>agree<="0111";when others=>agree<="0000";end case;case cnt0iswhen0=>disagree<="0000";when1=>disagree<="0001";when2=>disagree<="0010";when3=>disagree<="0011";when4=>disagree<="0100";when5=>disagree<="0101";when6=>disagree<="0110";when7=>disagree<="0111";when others=>disagree<="0000";end case;end process;end;程序输入完成后进行保存,名字与实体名一致BJQ。

EDA实验报告(1)

EDA实验报告
--基于maxplusII软件的实验
教师:赵乐军
班级:信工08
学号:1008
姓名:XXX
一、七人抢答器
要求:设计一个七人抢答器(设秒脉冲已给),主持人按下后抢答才有效,按下抢答开关后64秒系统复位。

设计原理图:
设计思想:
抢答器由计数部分和抢答部分组成,其中计数部分为一个六位异步二进制加法器,由抢答按钮控制使其在计数到64秒时使系统复位。

复位后未按下抢答开关时,计数部分保持全0状态。

抢答器部分由6个D触发器组成,当按下抢答开始按钮START后,可以开始抢答。

当一个人按下抢答键后,将抑制其他人的抢答信号。

仿真波形图:
二、模123可逆计数器
要求:设计一个模123的可逆计数器
设计原理图:
设计思想:主体部分由7个T触发器构成。

当选择信号M为1时,为7位同步加法器,当M为0时,为7为同步减法器。

然后在加法器和减法器中设置相应的清零和置1信号,使之变成模123的计数器。

仿真波形图:M=0,减法器:
M=1,加法器:
中途切换:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA实验报告
实验一 十进制计数器设计与仿真
一、预习内容
1. 结合教材中的介绍熟悉QuartusⅡ、ModelSim软件的使用及设计流程;
2. 十进制计数器设计原理。
二、实验目的
1. 掌握VHDL设计方法;
2. 熟悉QuartusⅡ、ModelSim软件的使用及设计流程;
3. 掌握十进制计数器的设计。
三、实验器材
PC机一台、配套EDA开发工具QuartusⅡ、ModelSim
四、实验要求
1、用VHDL设计一个十进制计数器;
2、用VHDL设计十进制计数器的测试平台;
3、用Quartus II完成十进制计数器的综合实现;
4、用ModelSim完成十进制计数器的时序仿真。
五、实验原理与内容
1、原理:
计数器是数字系统中的基本逻辑器件。计数器分为同步计数器和异步
计数器。
同步计数器指在时钟脉冲(计数脉冲)的控制下,构成计数器的各触
发器状态同时发生变化的计数器,即计数器内部各触发器的时钟信号是统
一的时钟信号。同步计数器具有工作稳定可靠、工作频率高的优点,但消
耗硬件资源较多。
异步计数器又称为行波计数器,它的低位计数器的输出作为高位计数
器的时钟信号。异步计数器采用行波计数,使计数延迟增加,计数器工作
频率较低,但具有消耗资源较少的优点。
计数器的清零信号分为同步清零和异步清零。同步清零由时钟的边沿
信号控制产生清零操作,异步清零操作与时钟信号无关。
十进制计数器的计数范围为0~9循环变化,输入信号包括:时钟信号、
复位信号;输出信号包括:4位宽的计数结果、进位位。

2、实现框图:

六、实验步骤
1、
用VHDL语言设计一个异步清零的十进制同步计数器;

2、
用VHDL设计十进制计数器的测试平台;

3、
完成该计数器的综合、布局布线和时序仿真;

七、实验报告
1、写出实验源程序,并附上综合结果和仿真波形;
2、分析实验结果;
3、心得体会――本次实验中你的感受;你从实验中获得了哪些收益;本次实
验你的成功之处;本次实验中还有待改进的地方;下次实验应该从哪些地
方进行改进;怎样提高自己的实验效率和实验水平等等。
4、完成实验思考题。
八、问题及思考

1、通过仿真比较计数器同步清零与异步清零的区别。
2、理解同步计数器与异步计数器原理的区别,比较两种计数器综合后的性
能差异(主要从消耗资源和运算速度考虑)。

十进制计数器
clock
reset
Counter_out[3..0]

Cout
实验报告:
1、 代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity cont10 is
port( clock ,reset:in std_logic;
cnt: out std_logic_vector(3 downto 0);
c_o: out std_logic);

end cont10;

architecture art of cont10 is
signal cnt_reg : std_logic_vector(3 downto 0);
begin
process(reset, clock)
begin
if reset='0' then
cnt_reg<=(others=>'0');
else if clock'event and clock='1'
then
if cnt_reg<9 then
cnt_reg<=cnt_reg+1;
else
cnt_reg<="0000";
end if ;
end if;
end if;
end process ;
process (clock,cnt_reg) is
begin
if clock'event and clock='1' then
if cnt_reg="1001" then
c_o<='1';
else c_o<='0';
end if;
end if;
end process;
cnt<=cnt_reg;

end art
2、 综合结果:
3、仿真测试文件代码(TestBench):
-- Generated on "10/27/2014 21:32:25"
-- Vhdl Test Bench template for design : cont10
-- Simulation tool : ModelSim-Altera (VHDL)

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY cont10_vhd_tst IS
END cont10_vhd_tst;
ARCHITECTURE cont10_arch OF cont10_vhd_tst IS
-- constants
-- signals
SIGNAL c_o : STD_LOGIC;
SIGNAL clock : STD_LOGIC;
SIGNAL cnt : STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL reset : STD_LOGIC;
COMPONENT cont10
PORT (
c_o : OUT STD_LOGIC;
clock : IN STD_LOGIC;
cnt : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
reset : IN STD_LOGIC
);
END COMPONENT;
BEGIN
i1 : cont10
PORT MAP (
-- list connections between master ports and signals
c_o => c_o,
clock => clock,
cnt => cnt,
reset => reset
);
init : PROCESS
-- variable declarations
BEGIN
clock<='0';wait for 10 ns ; --生成时钟信号;
clock<='1';wait for 10 ns ;
END PROCESS init;
always : PROCESS
-- optional sensitivity list
-- ( )
-- variable declarations
BEGIN
reset<='1';wait for 300ns; --生成复位信号;
reset<='0';wait for 500ns;
reset<='1'; wait ;
END PROCESS always;
END cont10_arch;

4、仿真波形:
5、实验结果分析:
由实验仿真波形可以看出,生成了一个计数范围为0~9循环变化的十进
制计数器;当计数到9时,进位端输出“1”;当复位信号reset为低电平即有
效时,输出随即清零。

6、心得体会:
由于第一次使用Quartus Ⅱ ,实验过程中遇到了诸多问题和困难,比
如,基本语法知识掌握不牢固导致编译出现错误;调用ModelSim仿真软件时
路径不匹配;测试文件(TestBench)设置出现小错误等。
在接下来的实验中,要记下容易忽视的步骤及关键点,多调试,善于发
现问题并及时解决。

7、问题思考:
① 计数器同步清零与异步清零的区别
由仿真结果可以看出,“异步清零”时,当清零信号有效,无需等待
时钟信号,输出立即清零。“同步清零”由时钟的边沿信号控制产生清零
操作,当清零信号有效时,在下一时钟周期触发条件下,执行清零操作。

② 理解同步计数器与异步计数器原理的区别,比较两种计数器综合后的
性能差异(主要从消耗资源和运算速度考虑)。

同步计数器的每个触发器都是由同一个时钟脉冲来控制的。异步计数
器的的每个触发器不是由同一个时钟脉冲来控制的,它由主时钟来控制第一个
触发器,前一个触发器的输出信号作为后一个触发器的时钟信号。
由于同步计数器由同一个时钟信号触发,所以同步计数器运算速度要
比异步计数器快很多,此外同步计数器工作稳定可靠、工作频率高,但消耗硬
件资源较多。由于异步计数器采用行波计数,所以使计数延迟增加,计数器工
作频率较低,但其消耗资源较少。

相关文档
最新文档