【报告】数电VHDL实验报告_第1页
【报告】数电VHDL实验报告_第2页
【报告】数电VHDL实验报告_第3页
【报告】数电VHDL实验报告_第4页
【报告】数电VHDL实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.【报告】数电VHDL实验报告文档收集于互联网,如有不妥请联系删除.PAGE1文档收集于互联网,如有不妥请联系删除.文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.文档收集于互联网,如有不妥请联系删除.【关键字】报告2009级数字电路实验报告实验名称:EDA基础实验学生姓名:桂柯易班级:20班内序号:07学号:09210580日期:2011年4月28日1.实验要求【实验目的】1.熟悉用QuartusII原理图输入法进行电路设计和仿真;2.掌握QuartusII图形模块单元的生成与调用;3.熟悉用VHDL语言设计组合逻辑电路和时序电路的方法;4.熟悉用QuartusII文本输入法和图形输入法进行电路设计;5.熟悉不同的编码及其之间的转换;6.掌握触发器的逻辑功能及使用方法;7.熟悉计数器、寄存器、锁存器、分频器、移位寄存器的设计方法8.掌握VHDL语言的语法规范,掌握时序电路描述方法;9.掌握多个数码管动态扫描显示的原理及设计方法。【实验所用仪器及元器件】1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板【实验内容】1.用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。2.用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板尝试,要求用拨码开关设定输入信号,发光二极管显示输出信【报告】数电VHDL实验报告全文共15页,当前为第1页。号。【报告】数电VHDL实验报告全文共15页,当前为第1页。3.用3线-8线译码器(74LS138)和逻辑门设计实现函数F,仿真验证其功能,并下载到实验板尝试。要求用拨码开关设定输入信号,发光二极管显示输出信号。4.用VHDL语言设计实现一个3位二进制数值比较器,仿真验证其功能,并下载到实验板尝试。要求用拨码开关设定输入信号,发光二极管显示输出信号。5.用VHDL语言设计实现一个4选1的数据选择器;一个8421码转换为格雷码的代码转换器;一个举重比赛裁判器;一个带同步置位和同步复位功能的D触发器;一个带异步复位的4位二进制减计数器;一个带异步复位的8421码十进制计数器;一个带异步复位的4位自启动环形计数器;一个带控制端的8位二进制寄存器,当控制端为‘1’时,电路正常工作,否则输出为高阻态;一个分频系数为12,分频输出信号占空比为50%的分频器。仿真验证其功能,并下载到实验板尝试。要求用拨码开关和按键开关设定输入信号,发光二极管显示输出信号。(注:有几个不需要下载到实验板尝试)2.程序分析全加器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREaOFh_adderISBEGINso<=aXORb;co<=aANDb;END;libraryieee;useieee.std_logic_1164.all;entityGKY07P3isport(ain,bin,cin:instd_logic;cout,sum:outstd_logic);endentityGKY07P3;architectureaofGKY07P3iscomponenth_adderport(a,b:instd_logic;【报告】数电VHDL实验报告全文共15页,当前为第2页。co,so:outstd_logic);【报告】数电VHDL实验报告全文共15页,当前为第2页。endcomponent;signald,e,f:std_logic;beginu1:h_adderportmap(a=>ain,b=>bin,co=>d,so=>e);u2:h_adderportmap(a=>e,b=>cin,co=>f,so=>sum);cout<=dorf;end;整体思路是按照实验的要求,先做出一个半加器,然后在这个半加器的基础上实现全加器的功能。函数F:3位二进制数值比较器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P4ISPORT(A:INSTD_LOGIC_VECTOR(2DOWNTO0);B:INSTD_LOGIC_VECTOR(2DOWNTO0);YA,YB,YC:OUTSTD_LOGIC);ENDGKY07P4;ARCHITECTUREbehaveOFGKY07P4ISBEGINPROCESS(A,B)BEGINIF(A>B)THENYA<='1';YB<='0';YC<='0';ELSIF(A<B)THENYA<='0';YB<='1';YC<='0';ELSEYA<='0';YB<='0';YC<='1';ENDIF;ENDPROCESS;ENDbehave;将比较的过程直接交给软件本身,只需通过不同的二进制数输出比较的结果即可。4选1数据选择器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P5ISPORT(G,A1,A0:INSTD_LOGIC;D0,D1,D2,D3:INSTD_LOGIC;Y,YB:OUTSTD_LOGIC);ENDGKY07P5;ARCHITECTUREbehaveOFGKY07P5ISSIGNALcomb:STD_LOGIC_VECTOR(1DOWNTO0);BEGIN【报告】数电VHDL实验报告全文共15页,当前为第3页。comb<=A1&A0;【报告】数电VHDL实验报告全文共15页,当前为第3页。PROCESS(G,comb,D0,D1,D2,D3)BEGINIFG='0'THENCASEcombISWHEN"00"=>Y<=D0;YB<=NOTD0;WHEN"01"=>Y<=D1;YB<=NOTD1;WHEN"10"=>Y<=D2;YB<=NOTD2;WHEN"11"=>Y<=D3;YB<=NOTD3;WHENOTHERS=>Y<='0';YB<='1';ENDCASE;ELSEY<='0';YB<='1';ENDIF;ENDPROCESS;ENDbehave;主要是WHEN语句的运用,用两位二进制数表示四种数据输出状态,再用WHEN语句具体实现。8421码转换为格雷码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P6ISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);B:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDGKY07P6;ARCHITECTUREbehaveOFGKY07P6ISBEGINPROCESS(A)BEGINB(3)<=A(3);B(2)<=A(3)XORA(2);B(1)<=A(2)XORA(1);B(0)<=A(1)XORA(0);ENDPROCESS;ENDbehave;本来是考察WHEN语句的运用,将所有的情况用WHEN语句列出来,但是因为8421码转换为格雷码的时候有一个相关的计算式子,采用这个式子可以使程序简化不少。举重比赛裁判器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P7ISPORT(a:INSTD_LOGIC_VECTOR(2DOWNTO0);b:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDGKY07P7;【报告】数电VHDL实验报告全文共15页,当前为第4页。ARCHITECTUREbehaveOFGKY07P7IS【报告】数电VHDL实验报告全文共15页,当前为第4页。BEGINPROCESS(a)BEGINCASEaISWHEN"000"=>b<="000";WHEN"001"=>b<="000";WHEN"010"=>b<="000";WHEN"011"=>b<="100";WHEN"100"=>b<="100";WHEN"101"=>b<="111";WHEN"110"=>b<="111";WHEN"111"=>b<="111";ENDCASE;ENDPROCESS;END;与前几题不同,这个更偏向应用。列出实际情况的状态表,发现三个裁判的不同判断各对应红黄绿灯的亮灭情况,故还是WHEN语句的应用。D触发器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P8ISPORT(d,clk,set,reset:INSTD_LOGIC;q,qb:OUTSTD_LOGIC);ENDGKY07P8;ARCHITECTUREstrucOFGKY07P8ISBEGINPROCESS(clk,set,reset)BEGINIFset='0'ANDreset='1'THENq<='1';qb<='0';ELSIFset='1'ANDreset='0'THENq<='0';qb<='1';ELSIFclk'EVENTANDclk='1'THENq<=d;qb<=NOTd;ENDIF;ENDPROCESS;ENDstruc;和书上的例子基本一样,只是同步置位和同步复位都跟随时间脉冲的变化。4位二进制减计数器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P9IS【报告】数电VHDL实验报告全文共15页,当前为第5页。PORT(clk,reset:INSTD_LOGIC;【报告】数电VHDL实验报告全文共15页,当前为第5页。q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDGKY07P9;ARCHITECTUREstrucOFGKY07P9ISSIGNALq_temp:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIFreset='0'THENq_temp<="1111";ELSIFq_temp<="0000"THENq_temp<="1111";ELSEq_temp<=q_temp-1;ENDIF;ENDIF;ENDPROCESS;q<=q_temp;ENDstruc;从状态‘1111’到状态‘0000’,然后再跳回‘1111’。异步复位不需要跟随脉冲变化,要立即复位。8421码十进制计数器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P10ISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDGKY07P10;ARCHITECTUREstrucOFGKY07P10ISSIGNALq_temp:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIFreset='1'THENq_temp<="0000";ELSIFq_temp="1001"THENq_temp<="0000";ELSEq_temp<=q_temp+1;ENDIF;ENDIF;【报告】数电VHDL实验报告全文共15页,当前为第6页。ENDPROCESS;【报告】数电VHDL实验报告全文共15页,当前为第6页。q<=q_temp;ENDstruc;从状态‘0000’到状态‘1001’,然后再跳回‘0000’,异步复位要立即复位。4位环形计数器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P11ISPORT(clk,reset:INSTD_LOGIC;countout:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDGKY07P11;ARCHITECTUREbehaveOFGKY07P11ISSIGNALnextcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk,reset)BEGINIFRESET='1'THENnextcount<="0001";ELSIF(clk'EVENTANDclk='1')THENCASEnextcountISWHEN"0001"=>nextcount<="0010";WHEN"0010"=>nextcount<="0100";WHEN"0100"=>nextcount<="1000";WHENOTHERS=>nextcount<="0001";ENDCASE;ENDIF;ENDPROCESS;countout<=nextcount;ENDbehave;计数状态在‘0001’,‘0010’,‘0100’,‘1000’四个之间转换,由于需要能够自启动,对别状态的处理是全部引到那四个计数状态上。8位二进制寄存器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGKY07P12ISPORT(d:INSTD_LOGIC_VECTOR(7DOWNTO0);oe,clk:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDGKY07P12;ARCHITECTUREstrucOFGKY07P12ISSIGNALtemp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(clk,oe)BEGINIFoe='1'THEN【报告】数电VHDL实验报告全文共15页,当前为第7页。IFclk'EVENTANDclk='1'THEN【报告】数电VHDL实验报告全文共15页,当前为第7页。temp<=d;ENDIF;ELSEtemp<="ZZZZZZZZ";ENDIF;q<=temp;ENDPROCESS;ENDstruc;和书上的例子基本一样,将低电平控制改成高电平控制即可。分频器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P13ISPORT(clk,clear:INSTD_LOGIC;clk_out:OUTSTD_LOGIC);ENDGKY07P13;ARCHITECTUREstrucOFGKY07P13ISSIGNALtemp:INTEGERRANGE0TO11;BEGINp1:PROCESS(clear,clk)BEGINIFclear='0'THENtemp<=0;ELSIFclk'EVENTANDclk='1'THENIFtemp=11THENtemp<=0;ELSEtemp<=temp+1;ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS(temp)BEGINIFtemp<6THENclk_out<='0';ELSEclk_out<='1';ENDIF;ENDPROCESSp2;ENDstruc;很重要的一个器件,但是设计难度并不很高,首先是模为12的计数,然后是占空比50%。【报告】数电VHDL实验报告全文共15页,当前为第8页。数码管串行扫描电路:【报告】数电VHDL实验报告全文共15页,当前为第8页。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P14ISPORT(clk,clear:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(6DOWNTO0);countout:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDGKY07P14;ARCHITECTUREbehaveOFGKY07P14ISSIGNALq_temp:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALcount:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALcnt:INTEGERRANGE0TO5;BEGINp1:PROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIF(cnt=5)THENcnt<=0;ELSEcnt<=cnt+1;ENDIF;ENDIF;ENDPROCESS;p2:PROCESS(cnt)BEGINIF(clear='0')THENcount<="111111";ELSECASEcntISWHEN1=>count<="101111";q_temp<="0110000";WHEN2=>count<="110111";q_temp<="1101101";WHEN3=>count<="111011";q_temp<="1111001";WHEN4=>count<="111101";q_temp<="0110011";WHEN5=>count<="111110";q_temp<="1011011";WHEN0=>count<="011111";q_temp<="1111110";ENDCASE;ENDIF;ENDPROCESS;countout<=count;q<=q_temp;ENDbehave;先用0~5六进制计数器产生六个计数状态,这六个状态同时决定二极管点亮的数字和数码管接通的电路,在时钟信号频率很高的时候可以同时显示0~5六个数字。只是在下载到实验板的时候与芯片的各个引脚一定要对应,不然容易达不到实验要求。数码管滚动显示电路:【报告】数电VHDL实验报告全文共15页,当前为第9页。LIBRARYIEEE;【报告】数电VHDL实验报告全文共15页,当前为第9页。USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P14ISPORT(clk,clear:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(6DOWNTO0);countout:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDGKY07P14;ARCHITECTUREbehaveOFGKY07P14ISSIGNALq_temp:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALcount:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALcnt,cnt1:INTEGERRANGE0TO5;SIGNALtmp:INTEGERRANGE0TO1999;signalclk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIFclear='0'THENtmp<=0;ELSIFclk'EVENTANDclk='1'THENIFtmp=1999THENtmp<=0;ELSEtmp<=tmp+1;ENDIF;ENDIF;ENDPROCESSp0;p1:PROCESS(tmp)BEGINIFclk'EVENTANDclk='1'THENIFtmp<1000THENclk1<='0';ELSEclk1<='1';ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIF(cnt=5)THENcnt<=0;ELSEcnt<=cnt+1;ENDIF;ENDIF;【报告】数电VHDL实验报告全文共15页,当前为第10页。ENDPROCESSp2;【报告】数电VHDL实验报告全文共15页,当前为第10页。p3:PROCESS(clk1)BEGINIF(clk1'EVENTANDclk1='1')THENIF(cnt1=5)THENcnt1<=0;ELSEcnt1<=cnt1+1;ENDIF;ENDIF;ENDPROCESSp3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THENq_temp<="0000000";ELSECASEcnt+cnt1ISWHEN0=>q_temp<="1111110";WHEN1=>q_temp<="0110000";WHEN2=>q_temp<="1101101";WHEN3=>q_temp<="1111001";WHEN4=>q_temp<="0110011";WHEN5=>q_temp<="1011011";WHEN6=>q_temp<="1111110";WHEN7=>q_temp<="0110000";WHEN8=>q_temp<="1101101";WHEN9=>q_temp<="1111001";WHEN10=>q_temp<="0110011";WHEN11=>q_temp<="1011011";WHENOTHERS=>q_temp<="0000000";ENDCASE;ENDIF;ENDPROCESSp4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THENcount<="111111";ELSECASEcntISWHEN0=>count<="011111";WHEN1=>count<="101111";WHEN2=>count<="110111";WHEN3=>count<="111011";WHEN4=>count<="111101";WHEN5=>count<="111110";WHENOTHERS=>count<="111111";【报告】数电VHDL实验报告全文共15页,当前为第11页。ENDCASE;【报告】数电VHDL实验报告全文共15页,当前为第11页。ENDIF;ENDPROCESSp5;countout<=count;ENDbehave;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGKY07P14ISPORT(clk,clear:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(6DOWNTO0);countout:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDGKY07P14;ARCHITECTUREbehaveOFGKY07P14ISSIGNALq_temp:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALcount:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALcnt,cnt1:INTEGERRANGE0TO11;SIGNALtmp:INTEGERRANGE0TO1999;signalclk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIFclear='0'THENtmp<=0;ELSIFclk'EVENTANDclk='1'THENIFtmp=1999THENtmp<=0;ELSEtmp<=tmp+1;ENDIF;ENDIF;ENDPROCESSp0;p1:PROCESS(tmp)BEGINIFclk'EVENTANDclk='1'THENIFtmp<1000THENclk1<='0';ELSEclk1<='1';ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THEN【报告】数电VHDL实验报告全文共15页,当前为第12页。IF(cnt=11)THENcnt<=0;【报告】数电VHDL实验报告全文共15页,当前为第12页。ELSEcnt<=cnt+1;ENDIF;ENDIF;ENDPROCESSp2;p3:PROCESS(clk1)BEGINIF(clk1'EVENTANDclk1='1')THENIF(cnt1=11)THENcnt1<=0;ELSEcnt1<=cnt1+1;ENDIF;ENDIF;ENDPROCESSp3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THENq_temp<="0000000";ELSECASEcnt+cnt1ISWHEN6=>q_temp<="1111110";WHEN7=>q_temp<="0110000";WHEN8=>q_temp<="1101101";WHEN9=>q_temp<="1111001";WHEN10=>q_temp<="0110011";WHEN11=>q_temp<="1011011";WHENOTHERS=>q_temp<="0000000";ENDCASE;ENDIF;ENDPROCESSp4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THENcount<="111111";

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论