您好,欢迎访问三七文档
本科生实验报告实验课程可编程ASIC技术及应用学院名称信息科学与技术学院专业名称信息工程学生姓名田斌学生学号201213010220指导教师高嵩实验地点6B604实验成绩2015年4月27日2015年5月18日实验一8位硬件加法器VHDL设计【实验目的】学习8位硬件加法器的设计,进一步学习电路的仿真验证和硬件测试。【实验内容】本实验的内容是建立一个8位硬件加法器,并在GW48试验箱上进行测试。【实验原理】加法器是数字系统中的基本逻辑器件例如为了节省资源减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。【实验步骤】1.用VHDL语言或图形输入法设计一个八位全加器;2.对最后的顶层文件进行编译、仿真;【实验结果】1.程序如下LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADDER8ISPORT(CIN:INSTD_LOGIC;A,B:INSTD_LOGIC_VECTOR(7DOWNTO0);S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);COUT:OUTSTD_LOGIC);ENDADDER8;ARCHITECTUREbehavOFADDER8ISSIGNALSINT,AA,BB:STD_LOGIC_VECTOR(8DOWNTO0);BEGINAA='0'&A;BB='0'&B;SINT=AA+BB+CIN;S=SINT(7DOWNTO0);COUT=SINT(8);ENDbehav;2.仿真波形【实验小结】通过本次实验,学习了8位硬件加法器的设计,进一步了解使用VHDL表达和设计电路的方法,学会了QuartusII的基本使用。实验二动态数码管显示【实验目的】学习硬件扫描显示电路的设计。【实验内容】本实验的内容是建立数码管动态扫描显示,具体内容如下:1.在试验箱上完成LED数码管的动态显示。2.放慢扫描速度演示动态显示的原理过程。【实验原理】为了减少8位显示信号的接口连接线,实验箱中的数码显示采用扫描显示工作模式。即8位数码管的七段译码输入(a,b,c,d,e,f,g)是并联在一起的,而每一个数码管是通过一个位选择sel[2..0]来选定的。sel与数码管之间是一3-8译码的关系,即sel为“000”时,选中第一个数码管,sel为“111”时,选中第八个数码【实验步骤】1.设计程序2.仿真3.实现功能【实验结果】1.程序如下libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityscan_ledisport(clk:instd_logic;sg:outstd_logic_vector(6downto0);bt:outstd_logic_vector(7downto0));end;architectureoneofscan_ledissignalcnt8:std_logic_vector(2downto0);signala:integerrange0to15;beginp1:process(cnt8)begincasecnt8iswhen000=bt=00000001;A=1;when001=bt=00000010;A=3;when010=bt=00000100;A=5;when011=bt=00001000;A=7;when100=bt=00010000;A=9;when101=bt=00100000;A=11;when110=bt=01000000;A=13;when111=bt=10000000;A=15;whenothers=null;endcase;endprocessp1;p2:process(clk)beginifclk'eventandclk='1'thencnt8=cnt8+1;endif;endprocessp2;p3:process(a)begincaseaiswhen0=sg=0111111;when1=sg=0000110;when2=sg=1011011;when3=sg=1001111;when4=sg=1100110;when5=sg=1101101;when6=sg=1111101;when7=sg=0000111;when8=sg=1111111;when9=sg=1101111;when10=sg=1110111;when11=sg=1111100;when12=sg=0111001;when13=sg=1011110;when14=sg=1111001;when15=sg=0000110;endcase;endprocessp3;end;2.仿真结果【实验总结】通过这个机会我们可以将我们课上学到的理论与实践相结合,在今后的学习中应定要多实践,切实把握好每一个动手的机会此次实验使我进一步了解了QuartusII这款软件,认识到熟练掌握相应的软件操作是多么的重要而这并不是一蹴而就的重要在于平时的积累,抽出些时间去学习去练习使用相关的软件对今后的发展也是十分有利的。实验三数控分频器的设计【实验目的】学习数控分频器的设计,分析和测试方法。【实验内容】分析程序一中的各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图;输入不同的CLK频率和预置值D,给出如书图6-21的时序波形。【实验原理】数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。【实验步骤】1、在QuartⅡ中建立工程,进行程序编写、调试、编译、仿真,设置CLK频率和D为不同值;2、分析程序一,类推出16位分频器的设计方法;3、仔细分析程序一中如何控制正负脉宽的宽度,采用元件例化语句,将DVF和SEL2两个VHDL设计实体组合起来,设计如题中要求的电路,具体程序见程序三,并按步骤1执行。【实验结果】1.程序代码2.仿真情况【实验结论】虽然在实验过程中遇到了许多困难,但最终这些问题在老师与同学的帮助下,自己研究得到了解决,通过这次实验,我确实体会到了做实验,做研究的艰辛。一个实际上难度不是很大的实验,却因为自己的思考的不够全面,有时会蛮干而一次次的受挫。同时也锻炼了自己的实验能力,大大地加强了自己对ASIC这门课程的认识,使我自己对这门课程也产生了很大的兴趣。实验四用状态机实现序列检测器【实验目的】用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。【实验内容及原理】序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出a,否则输出b。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。电路完成对序列数11100101的。当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“a”,否则仍然输出“b”。【实验步骤】1.新建Verilog工程项目,编写代码并保存至与模块名对应的项目文件夹。2.编译程序,编译无误后,在【tools】【netlistviewers】里面选择RTLViewer,观察电路结构;在【tools】【netlistviewers】里面选择StateMachineViewer,查看状态机转换图。3.新建波形文件进行仿真。保存时要和源程序存放在同一目录下。设置好输入波形参数后,开始仿真。在仿真后输入输出波形中观察逻辑关系是否正确。4.将实验箱和PC合理连接起来。打开EDA6000软件,设置好芯片类型为ACEX1K(EP1K30TC144-3),载入模式12。5.根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSⅡ里面设定管脚号并检查无误。6.将程序下载至FPGA内,并在EDA6000软件界面内进行验证测试。【实验结果】1.程序代码moduleSCHK(clk,din,clr,d,err);inputclk,din,clr;input[7:0]d;output[3:0]err;parameters0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;reg[8:0]cs,ns;reg[3:0]err;always@(posedgeclkorposedgeclr)beginif(clr)cs=s0;elsecs=ns;case(cs)s0:if(din==d[0])ns=s1;elsens=s0;s1:if(din==d[1])ns=s2;elsens=s0;s2:if(din==d[2])ns=s3;elsens=s0;s3:if(din==d[3])ns=s4;elsens=s0;s4:if(din==d[4])ns=s5;elsens=s0;s5:if(din==d[5])ns=s6;elsens=s0;s6:if(din==d[6])ns=s7;elsens=s0;s7:if(din==d[7])ns=s8;elsens=s0;s8:ns=s8;defaultns=s0;endcaseendalways@(ns)beginif(ns==s8)err=4'b1010;elseerr=4'b1110;endendmodule2.仿真结果【实验结论】QuartusII软件平台的应用。掌握了基于VHDL语言设计的基本流程和设计输入,设计编译,设计仿真等模块的应用。通过应用使我对VHDL语言深入的了解,可以熟练地使用QuartusII平台进行编程和其他应用。
本文标题:EDA技术使用教程
链接地址:https://www.777doc.com/doc-2911007 .html