首页 数字电路的VHDL设计

数字电路的VHDL设计

举报
开通vip

数字电路的VHDL设计 数字电路的 VHDL 设计 组合电路设计 基本门电路的设计(采用数据流设计 ) 基本门电路表达简单逻辑关系,采用简单的赋值语句就能方 便地实现;没有必要采用更复杂的结构。 反相器 y <= not a ; 4 输入与非 y <= not (a0 and a1and a2 and a3); 与或非 y <= not((a1 and a2) or( a3 and a4)); 为了表...

数字电路的VHDL设计
数字电路的 VHDL 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 组合电路设计 基本门电路的设计(采用数据流设计 ) 基本门电路表达简单逻辑关系,采用简单的赋值语句就能方 便地实现;没有必要采用更复杂的结构。 反相器 y <= not a ; 4 输入与非 y <= not (a0 and a1and a2 and a3); 与或非 y <= not((a1 and a2) or( a3 and a4)); 为了表达门电路的延迟时间,可以设置中间信号,利用 after 语句表达延迟时间;为了表达出上升时间和下降时间的 不同,可以采用条件赋值语句: 例:3 输入端异或门 cbay ⊕⊕= 参见 p.417 表 5-46 library ieee; use ieee.std_logic_1164.all; entity kxor3 is port (a, b, c: in std_logic; y: out std_logic); end kxor3; architecture rtl of kxor3 is signal y1: std_logic; begin y1<= a xor b xor c ; y<= y1 after 3 ns when y1='1' else y1 after 5 ns when y1='0' ; end rtl; 要点:采用中间变量以推迟信号的赋值时间; 改变上述程序中的赋值语句可以构成各类基本门电路; 对基本门电路延迟时间的设计能够较真实地模拟电路信 号传输的实际情况,分析时序 步骤 新产品开发流程的步骤课题研究的五个步骤成本核算步骤微型课题研究步骤数控铣床操作步骤 的正确性,避免竞争冒险; 但此类语句对电路综合没有效果; 基本组合功能电路 三态缓冲器(三态驱动器) 对数据总线的共享:每一时刻只有一个器件使能; 对于三态门的描述通常采用条件语句进行: 例: 4 输入与非 y <= not (a0 and a1and a2 and a3); 改为: y1 <= not (a0 and a1and a2 and a3); y<=y1 when en=’1’ else ’Z’ ; 单向总线控制 74x541 p.272 图 5-57 例:单向总线缓冲器 library ieee; use ieee.std_logic_1164.all; entity k74541 is port(a:in std_logic_vector(7 downto 0); g1,g2:in std_logic; y:out std_logic_vector(7 downto 0)); end k74541; architecture d of k74541 is signal en:std_logic; begin en<=not (g1 or g2); y<=a when en='1' else (others =>'Z'); end d; 双向总线控制 74x245 p.273 图 5-58 例: 74245 双向总线缓冲器 library ieee; use ieee.std_logic_1164.all; entity k74245 is port(a,b:inout std_logic_vector(7 downto 0); dir,g:in std_logic); end k74245; architecture dfl of k74245 is begin b<=a when (g = '0') and (dir = '0') else "ZZZZZZZZ"; a<=b when (g = '0') and (dir = '1') else (others=>'Z'); end dfl; 注意:双向总线在功能仿真时的输入设置 a 和 b 的输入不要同时存在; 设置 a 的输入,应将 b 的输入设置为“ZZZZ”(高阻); 转换传输方向时,应该以双向阻塞作为间隔; 数据选择器 MUX 电路中控制数据流动最为常用的手段; 根据控制量的数值由多路数据中选择一路输出; 数据流设计中的选择代入能够非常直观地表达 MUX 的概 念; 例 p.410 表 5-428 位 4 路 8 位数据选择器的数据流设计 library ieee; use ieee.std_logic_1164.all; entity mux4in8b is port (s: in std_logic_vector(1 downto 0); a,b,c,d: in std_logic_vector(1 to 8); y: out std_logic_vector( 1 to 8)); end mux4in8b; architecture rtl of mux4in8b is begin with s select y<= a when "00", b when "01", c when "10", d when "11", (others => 'U') when others; end rtl; 采用行为设计中的 case 语句也可以很方便地设计 MUX: 例 p.410 表 5-43 8 位 4 路数据选择器的行为设计 library ieee; use ieee.std_logic_1164.all; entity mux4in8p is port (s: in std_logic_vector(1 downto 0); a,b,c,d: in std_logic_vector(1 to 8); y: out std_logic_vector( 1 to 8)); end mux4in8p; architecture beh of mux4in8p is begin process(s,a,b,c,d) begin case s is when "00" => y<=a; when "01" => y<=b; when "10" => y<=c; when "11" => y<=d; when others => y<=(others =>'U'); end case; end process; end beh; 译码电路 二进制译码器 decoder 二进制译码器也称为“最小项发生器”,其多位输出分别表 达输入的不同最小项,典型表达形式为: ii my = 这种表达形式采用数据流设计能够方便地实现 例 p.368 表 5-15 3-8 译码器 74138 :反函数输出 采用选择代入语句实现 library ieee; use ieee.std_logic_1164.all; entity v74x138 is port (g1,g2al,g2bl: in std_logic; a: in std_logic_vector(2 downto 0); yl: out std_logic_vector( 0 to 7)); end v74x138; architecture rtl of v74x138 is signal yli:std_logic_vector(0 to 7); begin with a select yli<= "01111111" when "000", "10111111" when "001", "11011111" when "010", "11101111" when "011", "11110111" when "100", "11111011" when "101", "11111101" when "110", "11111110" when "111", "11111111" when others; yl<=yLi when (g1 and not g2al and not g2bl)='1' else "11111111"; end rtl; 将上述程序稍加改动可以得到二进制-十进制译码器设计; 二进制译码器也可以采用其他设计方式实现: 在 5.4.7 节中展示了多种设计程序; 码制转换电路 该类电路为多路输入/多路输出,将输入的编码转换为对应 的输出的编码;上述二进制译码器的数据流设计方式可以推 广到各类码制转换电路的设计中; 例:BCD—Excess-3(余 3 码)的转换 p.49 表 2-9 要求:输入 4 位 BCD 码,输出 4 位余 3 码(正函数) library ieee; use ieee.std_logic_1164.all; entity kbcd_ex3 is port (a: in std_logic_vector(3 downto 0); y: out std_logic_vector(3 downto 0)); end kbcd_ex3; architecture rtl of kbcd_ex3 is begin with a select y<= "0111" when "0000", "0100" when "0001", "0101" when "0010", "0110" when "0011", "0111" when "0100", "1000" when "0101", "1001" when "0110", "1010" when "0111", "1011" when "1000", "1100" when "1001", "1111" when others; end rtl; BCD 码-七段静态 LED 译码器 输入 4 位 BCD 码,产生 7 个输出,分别驱动相应显示器件; p.261 图 5-44 考虑 7 段输出与数字的对应关系,可以得出如下关系: abcdefg 0: 1111110 1: 0110000 2:1101101 3:1111001 library ieee; use ieee.std_logic_1164.all; entity bcdseg7 is port(data: in std_logic_vector(3 downto 0); y: out std_logic_vector(6 downto 0)); end bcdseg7; architecture d of bcdseg7 is begin y<="1111110" when data="0000" else "0110000" when data="0001" else "1101101" when data="0010" else "1111001" when data="0011" else "0110011" when data="0100" else "1011011" when data="0101" else "0011111" when data="0110" else "1110000" when data="0111" else "1111111" when data="1000" else "1110011" when data="1001" else "0000000" ; end d;
本文档为【数字电路的VHDL设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_200555
暂无简介~
格式:pdf
大小:133KB
软件:PDF阅读器
页数:10
分类:
上传时间:2010-01-06
浏览量:15