版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、组员:黄权 江飞 8011102班电子科学与技术专业课实验实 验 报 告班级 08011102 学号 2011301809 姓名 黄 权 2014 年 11 月 6 日实验一 组合逻辑半加器一 实验目的1设计一个组合逻辑半加器。2.掌握组合逻辑电路的静态测试方法。3.初步了解可编程逻辑器件设计的全过程。4.熟识quartusII软件基本功能的使用。二 实验原理半加器实现两位不带进位加法输出和及进位。一位半加器有两个输入a、b;两个输出s,Co。三.实现代码及原理图1.实验代码library ieee;use ieee.std_logic_1164.all;entity half_adder i
2、sport(a,b: in std_logic;sum,cout: out std_logic);end half_adder;architecture half1 of half_adder issignal c,d:std_logic;beginc<=a or b;d<=a nand b;cout<=not d;sum<=c and d;end half1;2.实验原理图四.实验结果及波形分析1.仿真波形2.波形分析a.如图标记部分,在仿真波形图中任取两处为例进行分析:椭圆1处:输入a为0,b为1,输出进位Co为0,和S为1。椭圆2处:输入a为1,b为0,输出进位C
3、o为0,和S为1。由于分析部分为随意抽取,具有普遍性,且分析结果符合半加器性能,所以实验成功。b.图中,在输入a、b都是下降沿时,输出S的波形出现毛刺,根据数电中学过的知识可以知道:产生毛刺是由于信号在通过半加器内的连线和逻辑单元时,有一定的时延而产生冒险。实验二 组合逻辑3-8译码器的设计一、实验目的设计并实现一个组合逻辑3-8译码器。熟识quartus II软件基本功能的使用。二、实验原理常用的译码器有:2-4译码器、3-8译码器、4-16译码器,下面我们用一个3-8译码器的设计来介绍译码器的设计方法。3-8译码器如图1所示,其真值表如表1。图1 3-8译码器表1 3-8译码器真值表:输入
4、输出G1G2AG2BABCY0NY1NY2NY3NY4NY5NY6NY7N0XXXXX111111111000000111111110000110111111100010110111111000111110111110010011110111100101111110111001101111110110011111111110三、实验步骤 1、建立工程encode,新建VHDL文件输入以下代码保存为encode38.vhdl。打开encode38.vhdl文件,选择Fileà Creat/Updateà Creat Symbol Files for Current Files
5、 生成顶层符号文件。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder38 ISPORT(A, B,C,G1,G2A,G2B: INSTD_LOGIC;Y: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END decoder38;ARCHITECTURE fun OF decoder38 ISSIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINindata <= C&B&A;encoder:PROCESS (indata, G1, G2A,G2B
6、)BEGINIF (G1='1' AND G2A='0' AND G2B='0') THENCASE indata ISWHEN "000"=>Y<="11111110"WHEN "001"=>Y<="11111101"WHEN "010"=>Y<="11111011"WHEN "011"=>Y<="11110111"WHEN "1
7、00"=>Y<="11101111"WHEN "101"=>Y<="11011111"WHEN "110"=>Y<="10111111"WHEN "111"=>Y<="01111111"WHEN OTHERS =>Y<="XXXXXXXX"END CASE;ELSEY<="11111111"END IF;END PROCESS encoder
8、;END fun; 2、然后新建一个Block Diagramm/Schematic File 原理图文件,在空白处双击添加生成的顶层原理图,并连接input、output(输入输出管脚)重命名后如图2所示。保存文件encoder38.bdf。图2 3-8译码器原理图3、点击主工具栏上的图标进行半编译,完成后新建一个波形仿真文件FileàNewàVerification/Debugging FilesàVector Vaveform File.,然后在左边空白处双击左键添加仿真管脚。完成后添加激励信号的波形,首先使用鼠标选中一个信号(变蓝),利用左边工具添加仿真信
9、号,根据需要依次添加各个信号并保存。4、功能仿真选择ProcessingàSimulator Tool 在弹出对话框中在仿真模式中选择”Functional” 然后点击”Generate Functional Simulation Netlist”生成功能仿真的Netlist,完成后点击”Start”按钮开始仿真,完成后点击”Report”来查看仿真结果。如图3所示。图3 仿真结果四、实验分析根据仿真结果图可以看出,当不满足G1='1' ,G2A='0' ,G2B='0'时,译码器的输出全为1;当满足以上条件时,完成译码工作,即:当CB
10、A= "000"时,输出Y为 "11111110"(Y0为0)当CBA= "001"时,输出Y为 "11111101"(Y1为0)可见,经过仿真,该译码器完成了正常译码功能。实验三 四位寄存器一、 实验目的:1. 掌握寄存器的设计方法和设计思路;2. 熟悉VHDL语言和Quartus II 软件的使用。二、 设计原理: 单向四位寄存器输入有三个端口,分别为时钟clk,异步置位端r和4位数据输入端d(3 downo0);一个4位输出端q(3 downto 0)。当r=1时,输出端q清零;当时钟的上升沿到来时,把数据送
11、到输出端,完成数据的寄存。三、设计VHDL源代码: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jcq is port( clk:in std_logic; r:in std_logic; d:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0) );end jcq;architecture rtl of jcq is signal q_te
12、mp:std_logic_vector(3 downto 0); begin process(clk,r) begin if(r='1')then q_temp<="0000" elsif(clk'event and clk='1')then q_temp<=d; end if; q<=q_temp; end process;end rtl;四、生成的元件图 五、仿真波形与分析1.当r=1时:分析:r=1时,输出端被清零,从波形图可看出q在任意时刻始终为0.2.当r=0时:分析:当r=0时,数据输入端d对数据接收端q
13、的赋值并不是与时钟完全同步,而是有一定的错开,这是因为逻辑门总有一定的传输延迟导致的。经实验发现,如果时钟周期越大,则这种延迟越明显,当达到一定的临界值时,输入与输出完全不对称了。以下为时钟clk=100ns数据输入周期大于100ns的情形: 可见,数据输入端d基本上与与数据接收端错开了。实验四 单时钟同步十六进制加/减计数器的设计一、 实验目的:1. 掌握计数器的设计原理和方法;2. 理解双向计数器的工作原理;3. 熟悉VHDL语言的使用和编程思想。二、 设计原理:该计数器共有5个输入端,分别为时钟clk、使能端enable、置数端load、和4个预置数端d1,d2,d3,d4;2个中间信号
14、d和y,其中d接收d1,d2,d3,d4的数据,即d=(d1 & d2 & d3 & d4);y作为临时计数变量。两个输出端口c和4位的q,其中c是进位输出,q是计数输出。当load=0,计数预置位y<=d;进位c<=0置零;当时钟上升沿到来且使能端enable=0时,允许计数。如果updown=0,进行加法计数,如果updown=1,进行减法计数;当时钟上升沿到来且使能端enable=1时,不计数而保持上一次的计数状态。三、设计的源代码: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic
15、_unsigned.all;use ieee.std_logic_arith.all;entity ls191 is port(clk,enable,load,updown,d0,d1,d2,d3:in std_logic; c:out std_logic; q:out std_logic_vector(3 downto 0);end ls191;architecture rtl of ls191 issignal y,d:std_logic_vector(3 downto 0); beginprocess(clk,enable,load,updown) begin d<=d3&
16、d2&d1&d0; if(load='0')then y<=d; c<='0' elsif(clk'event and clk='1')then if enable='0' thenif updown='0' then if(y="1111")theny<="0000"c<='1' elsey <= y+1;c<='0' end if; elsif updown='1'
17、 then if(y="0000")theny<="1111"c<='1' elsey<=y-1;c<='0' end if; end if; elsif enable='1'then y<=y; end if; end if; end process; q <= y ;end rtl;四、生成的元件图五、仿真波形与分析1.加法计数器:预置数=5 ,updown=0 功能仿真和时序仿真分析:从波形图可以看出,计数器能够完成计数的功能,当计数加到满值时,进位输出c=1。另外
18、,在一些数值转换的中间,有一些计数跳变,这是逻辑门的竞争与冒险所导致的。2.减法计数器 预置数=12, updaown=1 功能仿真和时序仿真分析:从波形图可以看出,计数器能够完成计数的功能,当计数减到满值时,进位输出c=1。另外,在一些数值转换的中间,有一些计数跳变,这是逻辑门的竞争与冒险所导致的。综合实验 乘法累加电路一、 实验目的:1. 了解组合逻辑和时序逻辑的综合设计思想;2. 进一步巩固VHDL语言的编程思想;3. 掌握QuartusII 软件开发数字系统的流程。二、 设计原理:该电路有三个模块:8x8乘法器、16位加法器和16位D触发器;框图如下所示 三、 VHDL源代码如下: 1
19、. 顶层代码: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity top is port( a,b:in std_logic_vector(7 downto 0); clk,rst:in std_logic; accum:buffer std_logic_vector(15 downto 0) ); end top; architecture top_archi of top issignal multtmp:std_logi
20、c_vector(15 downto 0);signal addertmp:std_logic_vector(15 downto 0);component mult8x8 is port( a,b:in std_logic_vector(7 downto 0); clk:in std_logic; q:out std_logic_vector(15 downto 0) );end component;component adder is port( clk:in std_logic; add1,add2:in std_logic_vector(15 downto 0); sum:out std
21、_logic_vector(15 downto 0) );end component;component DTrigger is port( clk:in std_logic; d:in std_logic_vector(15 downto 0); q:out std_logic_vector(15 downto 0) );end component ; begin U1:mult8x8 port map(a=>a,b=>b,clk=>clk,q=>multtmp); U2:adder port map(add1=>multtmp,add2=>accum,c
22、lk=>clk,sum=>addertmp); U3:DTrigger port map(d=>addertmp,clk=>clk,q=>accum); end architecture top_archi;2. 8x8乘法器: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity mult8x8 is port( a,b:in std_logic_vector(7 downto 0); clk:in st
23、d_logic; q:out std_logic_vector(15 downto 0) );end mult8x8;architecture mult8x8_archi of mult8x8 is begin process(clk,a,b) variable a_reg,b_reg:signed(7 downto 0); variable mult_reg:signed(15 downto 0); begin if(clk'event and clk='1')then a_reg := signed(a); b_reg := signed(b); mult_reg
24、:= a_reg * b_reg; end if; q <= std_logic_vector(mult_reg); end process;end architecture mult8x8_archi;3. 16位加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity adder is port( clk:in std_logic; add1,add2:in std_logic_vector(15 downto 0); sum:out std_logic_vector(15 downto 0) );end adder;architecture adder_archi of adder is signal temp:signed(15 downto 0); begin process(clk,add1,add2) begin if(clk'event and clk='1&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026农业无人机技术应用现状及商业化前景分析预测报告
- 江西省抚州市金溪县2026届中考历史最后冲刺模拟试卷含解析
- 2026届江西省育华学校中考语文五模试卷含解析
- 2026届浙江杭州余杭区重点中学中考历史五模试卷含解析
- 云南省大理州大理市达标名校2026届中考英语仿真试卷含答案
- (完整版)学校师德师风建设管理体系及监督措施
- 2026年应急演练的总结
- 黄山市重点中学2026届中考冲刺卷语文试题含解析
- 湖北省孝感市孝昌县2026届中考语文模试卷含解析
- 2025保定市顺平县高于铺镇社区工作者招聘考试真题及答案
- 2024年全国甲卷高考历史试卷(真题+答案)
- 2023年重庆理工大学应届生招聘科研助理考试真题
- 中医养生中的药膳食疗的课件
- 《山东饮食介绍》课件
- 文旅局消防安全培训课件
- 角膜化学性烧伤护理查房课件
- 控制电缆施工方案
- 渣土公司运输车辆管理制度(3篇)
- 针刀手法治疗脊柱侧弯专家讲座
- 污水处理厂电气设备运行与维护操作规程
- LY/T 3186-2020极小种群野生植物苗木繁育技术规程
评论
0/150
提交评论