




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009级数字电路实验报告实验名称: EDA基础实验学生姓名: 班 级: 班内序号: 学 号: 日 期: 1.实验要求【实验目的】1.熟悉用QuartusII原理图输入法进行电路设计和仿真;2.掌握QuartusII图形模块单元的生成与调用;3.熟悉用VHDL语言设计组合逻辑电路和时序电路的方法;4.熟悉用QuartusII文本输入法和图形输入法进行电路设计;5.熟悉不同的编码及其之间的转换;6.掌握触发器的逻辑功能及使用方法;7.熟悉计数器、寄存器、锁存器、分频器、移位寄存器的设计方法8.掌握VHDL语言的语法规范,掌握时序电路描述方法;9.掌握多个数码管动态扫描显示的原理及设计方法。【实验所用仪器及元器件】 1.计算机 2.直流稳压电源 3.数字系统与逻辑设计实验开发板【实验内容】 1.用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 2.用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功 能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信 号。 3.用3线-8线译码器(74LS138)和逻辑门设计实现函数F,仿真验证其功能,并下 载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 4.用VHDL语言设计实现一个3位二进制数值比较器,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 5.用VHDL语言设计实现一个4选1的数据选择器;一个8421码转换为格雷码的代码 转换器;一个举重比赛裁判器;一个带同步置位和同步复位功能的D触发器;一个 带异步复位的4位二进制减计数器;一个带异步复位的8421码十进制计数器;一 个带异步复位的4位自启动环形计数器;一个带控制端的8位二进制寄存器,当控 制端为1时,电路正常工作,否则输出为高阻态;一个分频系数为12,分频输 出信号占空比为50%的分频器。仿真验证其功能,并下载到实验板测试。要求用拨 码开关和按键开关设定输入信号,发光二极管显示输出信号。(注:有几个不需要 下载到实验板测试)2.程序分析全加器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE a OF h_adder ISBEGIN so= a XOR b; coain,b=bin,co=d,so=e); u2:h_adder port map(a=e,b=cin,co=f,so=sum); coutB)THEN YA=1;YB=0;YC=0; ELSIF(AB)THEN YA=0;YB=1;YC=0; ELSE YA=0;YB=0;YC=1; END IF; END PROCESS;END behave;将比较的过程直接交给软件本身,只需通过不同的二进制数输出比较的结果即可。4选1数据选择器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GKY07P5 IS PORT(G,A1,A0:IN STD_LOGIC; D0,D1,D2,D3:IN STD_LOGIC; Y,YB:OUT STD_LOGIC);END GKY07P5;ARCHITECTURE behave OF GKY07P5 IS SIGNAL comb:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN combY=D0;YBY=D1;YBY=D2;YBY=D3;YBY=0;YB=1; END CASE; ELSE Y=0;YB=1; END IF; END PROCESS;END behave;主要是WHEN语句的运用,用两位二进制数表示四种数据输出状态,再用WHEN语句具体实现。8421码转换为格雷码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GKY07P6 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END GKY07P6;ARCHITECTURE behave OF GKY07P6 ISBEGIN PROCESS(A) BEGIN B(3)=A(3); B(2)=A(3) XOR A(2); B(1)=A(2) XOR A(1); B(0) b b b b b b b b = 111; END CASE; END PROCESS;END;与前几题不同,这个更偏向应用。列出实际情况的状态表,发现三个裁判的不同判断各对应红黄绿灯的亮灭情况,故还是WHEN语句的应用。D触发器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GKY07P8 IS PORT(d,clk,set,reset:IN STD_LOGIC; q,qb:OUT STD_LOGIC);END GKY07P8;ARCHITECTURE struc OF GKY07P8 ISBEGIN PROCESS(clk,set,reset) BEGIN IF set=0 AND reset=1 THEN q=1;qb=0; ELSIF set=1 AND reset=0 THEN q=0;qb=1; ELSIF clkEVENT AND clk=1 THEN q=d;qb=NOT d; END IF; END PROCESS;END struc; 和书上的例子基本一样,只是同步置位和同步复位都跟随时间脉冲的变化。4位二进制减计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P9 IS PORT(clk,reset:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END GKY07P9;ARCHITECTURE struc OF GKY07P9 IS SIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF reset=0THEN q_temp=1111; ELSIF q_temp=0000 THEN q_temp=1111; ELSE q_temp=q_temp-1; END IF; END IF; END PROCESS; q=q_temp;END struc;从状态1111到状态0000,然后再跳回1111。异步复位不需要跟随脉冲变化,要立即复位。8421码十进制计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P10 IS PORT(clk,reset:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END GKY07P10;ARCHITECTURE struc OF GKY07P10 IS SIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF reset=1THEN q_temp=0000; ELSIF q_temp=1001THEN q_temp=0000; ELSE q_temp=q_temp+1; END IF; END IF; END PROCESS; q=q_temp;END struc; 从状态0000到状态1001,然后再跳回0000,异步复位要立即复位。4位环形计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GKY07P11 IS PORT(clk,reset:IN STD_LOGIC; countout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END GKY07P11;ARCHITECTURE behave OF GKY07P11 IS SIGNAL nextcount: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk,reset) BEGIN IF RESET=1 THEN nextcount nextcount nextcount nextcount nextcount=0001; END CASE; END IF; END PROCESS; countout=nextcount;END behave;计数状态在0001,0010,0100,1000四个之间转换,由于需要能够自启动,对别状态的处理是全部引到那四个计数状态上。8位二进制寄存器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GKY07P12 IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0); oe,clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END GKY07P12;ARCHITECTURE struc OF GKY07P12 IS SIGNAL temp:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(clk,oe) BEGIN IF oe=1 THEN IF clkEVENT AND clk=1 THEN temp=d; END IF; ELSE temp=ZZZZZZZZ; END IF; q=temp; END PROCESS;END struc;和书上的例子基本一样,将低电平控制改成高电平控制即可。分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P13 IS PORT(clk,clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC);END GKY07P13;ARCHITECTURE struc OF GKY07P13 IS SIGNAL temp:INTEGER RANGE 0 TO 11;BEGIN p1:PROCESS(clear,clk) BEGIN IF clear=0 THEN temp=0; ELSIF clkEVENT AND clk=1 THEN IF temp=11 THEN temp=0; ELSE temp=temp+1; END IF; END IF; END PROCESS p1; p2:PROCESS(temp) BEGIN IF temp6 THEN clk_out=0; ELSE clk_out=1; END IF; END PROCESS p2;END struc;很重要的一个器件,但是设计难度并不很高,首先是模为12的计数,然后是占空比50%。数码管串行扫描电路:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 IS PORT(clk,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END GKY07P14;ARCHITECTURE behave OF GKY07P14 IS SIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt:INTEGER RANGE 0 TO 5;BEGIN p1:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(cnt=5)THEN cnt=0; ELSE cnt=cnt+1; END IF; END IF; END PROCESS; p2:PROCESS(cnt) BEGIN IF(clear=0)THEN countcount=101111;q_tempcount=110111;q_tempcount=111011;q_tempcount=111101;q_tempcount=111110;q_tempcount=011111;q_temp=1111110; END CASE; END IF; END PROCESS; countout=count; q=q_temp;END behave; 先用05六进制计数器产生六个计数状态,这六个状态同时决定二极管点亮的数字和数码管接通的电路,在时钟信号频率很高的时候可以同时显示05六个数字。只是在下载到实验板的时候与芯片的各个引脚一定要对应,不然容易达不到实验要求。数码管滚动显示电路:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 IS PORT( clk,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END GKY07P14;ARCHITECTURE behave OF GKY07P14 IS SIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1:INTEGER RANGE 0 TO 5; SIGNAL tmp:INTEGER RANGE 0 TO 1999; signal clk1:STD_LOGIC;BEGIN p0:PROCESS(clk,clear) BEGIN IF clear=0 THEN tmp=0; ELSIF clkEVENT AND clk=1 THEN IF tmp=1999 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS p0; p1:PROCESS(tmp) BEGIN IF clkEVENT AND clk=1 THEN IF tmp1000 THEN clk1=0; ELSE clk1=1; END IF; END IF; END PROCESS p1; p2:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(cnt=5)THEN cnt=0; ELSE cnt=cnt+1; END IF; END IF; END PROCESS p2; p3:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1)THEN IF(cnt1=5)THEN cnt1=0; ELSE cnt1=cnt1+1; END IF; END IF; END PROCESS p3; p4:PROCESS(cnt,cnt1) BEGIN IF(clear=0)THEN q_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_temp=0000000; END CASE; END IF; END PROCESS p4; q=q_temp; p5:PROCESS(cnt) BEGIN IF(clear=0)THEN countcountcountcountcountcountcountcount=111111; END CASE; END IF; END PROCESS p5; countout=count;END behave; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 IS PORT( clk,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END GKY07P14;ARCHITECTURE behave OF GKY07P14 IS SIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1:INTEGER RANGE 0 TO 11; SIGNAL tmp:INTEGER RANGE 0 TO 1999; signal clk1:STD_LOGIC;BEGIN p0:PROCESS(clk,clear) BEGIN IF clear=0 THEN tmp=0; ELSIF clkEVENT AND clk=1 THEN IF tmp=1999 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS p0; p1:PROCESS(tmp) BEGIN IF clkEVENT AND clk=1 THEN IF tmp1000 THEN clk1=0; ELSE clk1=1; END IF; END IF; END PROCESS p1; p2:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(cnt=11)THEN cnt=0; ELSE cnt=cnt+1; END IF; END IF; END PROCESS p2; p3:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1)THEN IF(cnt1=11)THEN cnt1=0; ELSE cnt1=cnt1+1; END IF; END IF; END PROCESS p3; p4:PROCESS(cnt,cnt1) BEGIN IF(clear=0)THEN q_tempq_tempq_tempq_tempq_tempq_tempq_tempq_temp=0000000; END CASE; END IF; END PROCESS p4; q=q_temp; p5:PROCESS(cnt) BEGIN IF(clear=0)THEN countcountcountcountcountcountcountcount=111111; END CASE; END IF; END PROCESS p5; countout=count;END behave; 基本思路和串行显示类似,只是需要做到显示数字不断变化,因此先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品连锁采购管理制度
- 药库药品使用管理制度
- 药店基本药物管理制度
- 药店药品供应管理制度
- 薪资等级晋升管理制度
- 设备信息档案管理制度
- 设备大修计划管理制度
- 设备招标采购管理制度
- 设备润滑及其管理制度
- 设备维修安装管理制度
- 校园通创业计划书
- 2025陕煤集团榆林化学有限责任公司招聘(300人)笔试参考题库附带答案详解
- 临床重症患者坐式八段锦要点、适应人群、效果及注意事项
- 2024年四川省内江市资中县小升初数学试卷
- 地理-2025年江西省中考第一次模拟考试(全解全析)
- 开轰趴馆的创业计划书
- 《基础护理学(第七版)》考前强化模拟练习试题库500题(含答案)
- 加强门诊服务管理
- 【MOOC】《算法设计与分析》(东北大学) 中国大学慕课答案
- 2025年度消防设施远程监控及报警服务合同3篇
- 病案管理系统用户使用手册
评论
0/150
提交评论