




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第三章第三章 硬件描述语言硬件描述语言VHDLVHDL) 第三部分第三部分 基本逻辑电路设计基本逻辑电路设计基本逻辑电路: 组合逻辑电路、 时序逻辑电路一 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。3.9 3.9 基本逻辑电路设计基本逻辑电路设计1、基本门电路2、编码器 设计一个 8 输入优先级编码器,y0 级别最低,y7 级别最高;输出为3位编码。Y7=1Vec=111Y6=1Vec=110Y5=1Vec=101Y4=1Vec=100Y3=1Vec=011Y2=1Vec=010Y1=1Vec=001Y0=1Vec=000方法方法1 1:利用:利用 if
2、if 多选择语句自顶向下的优先特性多选择语句自顶向下的优先特性方法方法2 2:进程内为顺序语句,最先描述优先级最低,:进程内为顺序语句,最先描述优先级最低, 最后描述优先级最高,可实现优先级编码。最后描述优先级最高,可实现优先级编码。方法方法3 3:利用条件赋值语句:利用条件赋值语句 architecture behavior of architecture behavior of priority is priority is begin begin vec = “111” when y7 = vec = “111” when y7 = 1 else1 else “110” when “11
3、0” when y6 = 1 else y6 = 1 else “101” when “101” when y5 = 1 elsey5 = 1 else “100” when “100” when y4 = 1 else y4 = 1 else “011” when “011” when y3 = 1 elsey3 = 1 else “010” when “010” when y2 = 1 elsey2 = 1 else “001” when “001” when y1 = 1 elsey1 = 1 else “000” when “000” when y0 = 1 elsey0 = 1 el
4、se “XXX”; “XXX”; end behavior; end behavior;3、译码器 译码器是编码器的逆过程。如 3-8 译码器:sel=000Y=00000001sel =001Y=00000010sel =010Y=00000100sel =011Y=00001000sel =100Y=00010000sel =101Y=00100000sel =110Y=01000000sel =111Y=10000000方法方法1 1:使用逻辑左移运算符:使用逻辑左移运算符 library ieee;library ieee; use ieee.std_logic_1164.all; u
5、se ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_unsigned.all; entity decoder is entity decoder is port(inp : in port(inp : in std_logic_vector(2 downto 0);std_logic_vector(2 downto 0); outp : out outp : out std_logic_vector(7 downto 0);std_logic_vector(7 downto 0); en
6、d decoder; end decoder; architecture rtl of decoder is architecture rtl of decoder is begin begin outp=“00000001” outp=“00000001” sll(conv_integer(inp);sll(conv_integer(inp); end rtl; end rtl;方法方法2 2:使用:使用processprocess语句语句 library ieee;library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_1
7、164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_unsigned.all; entity decoder is entity decoder is port(inp : in std_logic_vector(2 port(inp : in std_logic_vector(2 downto 0);downto 0); outp : out outp : out std_logic_vector(7 downto 0);std_logic_vector(7 downto 0); end decoder; end deco
8、der; architecture rtl of decoder is architecture rtl of decoder is begin begin process(inp) process(inp) begin begin outp0); outp0); outp(conv_integer(inp)=1;outp(conv_integer(inp)=1; end process; end process; end rtl; end rtl;方法方法3 3:使用:使用 case case 语句实现。语句实现。译码输出低有效方法方法4 4:使用条件赋值语句:使用条件赋值语句3-8译码器仿
9、真结果:译码输出低有效4、多路选择器 前面用 if 语句、case 语句、条件赋值语句、选择赋值语句分别描述过4选1选择器。5、三态门及总线缓冲器 VHDL语言通过指定大写的Z值表示高阻状态 a : std_logic; a_bus:std_logic_vector(7 downto 0); 指定高阻状态如下: a = Z ; a_bus = “ZZZZZZZZ” ;1三态门电路描述三态门仿真结果:2单向总线缓冲器DOUT7.0ENDIN7.0ENTRI_BUF8DOUT7.0DIN7.03双向总线缓冲器B7.0ENDIRA7.0B7.0A7.0DIRENBIDIR二 时序逻辑电路设计 触发器
10、、寄存器、计数器、分频器、信号发生器等。一时序电路特殊信号的描述 时钟信号和复位信号 1、时钟信号描述 常用的描述方式: 1进程的敏感信号是时钟信号,在进程内 部用if 语句描述时钟的边沿条件。如: process (clock_signal) begin if (clock_edge_condition) then signal_out = signal_in ; 其它时序语句 end if ; end process ; 2在进程中用wait until语句描述时钟信号,此 时进程将没有敏感信号。 如: process begin wait until (clock_edge_condit
11、ion); signal_out = signal_in ; 其它时序语句 end process ; 注意: a.在对时钟边沿说明时,一定要注明是上升沿 还是下降沿。 b.一个进程中只能描述一个时钟信号。 c.wait until 语句只能放在进程的最前面或 最后面。3时钟边沿的描述 时钟上升沿: (clockevent and clock = 1) 时钟下降沿: (clockevent and clock = 0) 2、触发器的复位信号描述 1同步复位:在只有以时钟为敏感信号的进程 中定义。 如: process (clock_signal) begin if (clock_edge_co
12、ndition) then if (reset_condition) then signal_out = reset_value; else signal_out = signal_in ; end if ; end if ; end process ; 2异步复位:进程的敏感信号表中除时钟信 号外,还有复位信号。 如:process (reset_signal, clock_signal) begin if (reset_condition) then signal_out = reset_value; elsif (clock_edge_condition) then signal_out
13、 = signal_in ; end if ; end process ; 二) 常用时序电路设计 1、触发器Flip_Flop) 1D触发器异步置位/复位D触发器同步复位D触发器比较:异步置位的锁存器Latch) library ieee; use ieee.std_logic_1164.all; entity t_ff is port(t, clk : in std_logic; q : buffer std_logic); end t_ff; architecture rtl of t_ff is begin process(clk) begin if clkevent and clk=
14、1 then if t=1 then q=not q; else q=q; end if; end process; end rtl;TClkQQ2T触发器 library ieee; use ieee.std_logic_1164.all; entity rs_ff is port(r, s, clk : in std_logic; q, qn : buffer std_logic); end rs_ff; architecture rtl of rs_ff is begin process(r, s, clk) begin if clkevent and clk=1 then if s =
15、 1 and r = 0 then q=0; qn=1; elsif s=0 and r=1 then q=1; qn=0; elsif s=0 and r=0 then q=q; qn=q n; else null; end if; end if; end process; end rtl;SClkQQRSRQQn00QQn01101001113RS触发器2、寄存器 8位串行输入、串行输出移位寄存器:z0z1z2z3z4z5z6z7z88位移位寄存器描述结构描述)移位寄存器仿真结果:3、计数器 计数器分为:同步计数器 异步计数器(1同步计数器 同步计数器指在时钟脉冲计数脉冲的控 制下,构成计数器的各触发器状态同时发生变化 的计数器。带允许端的十二进制计数器可逆计数器加减计数器)可逆计数器仿真结果:例:六十进制分、秒计数器60进制计数器仿真结果:(2异步计数器 异步计数器又称为行波计数器,它的低位计数器的输出作为高位计数器的时钟信号。 异步计数器采用行波计数,使计数延迟增加,计数器工作频率较低。 描述异步计数器与同步计数器的不同主要体现在对各级时钟脉冲的描述上。例:由8个触发器构成的行波计数器: 基本元件 dff
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年人力资源管理师考试方案与试题及答案
- 2025年提分攻略土木工程师试题及答案
- 2025计算机技术与软件专业初级考试的技术应用试题及答案
- 2025年妇幼保健员考试学习资料汇整试题及答案
- 2025年健康管理师复习计划及试题及答案
- 2025年度车辆维修后客户投诉处理及反馈机制协议
- 2025年度科技贷款合同补充协议延期及研发项目支持
- 二零二五年度产学研合作就业实习协议
- 二零二五年度国际货物运输代理物流金融合作协议
- 2025年度私人土地租赁合同(养老社区建设)
- 手术室感染控制与预防措施
- 外科术后洗胃、尿管与引流管护理
- 大学文化艺术节电子竞技社团活动策划书
- 《油藏物理》西安石油大学学习通超星期末考试答案章节答案2024年
- 春季传染病预防知识主题班会课件
- 细胞的减数分裂
- 公安基础知识考试200个考点
- 实验一、RNA提取及检测ppt课件
- 美学-汉语言文学测试题
- 湘源控规使用方法和技巧
- SCB10-1000变压器出厂检验报告
评论
0/150
提交评论