可编程ASIC设计及应用核心语法与基础电路设计课件.ppt
《可编程ASIC设计及应用核心语法与基础电路设计课件.ppt》由会员分享,可在线阅读,更多相关《可编程ASIC设计及应用核心语法与基础电路设计课件.ppt(92页珍藏版)》请在三一办公上搜索。
1、可编程ASIC,核心语法与基础电路设计学时分配:4,电子科技大学,可编程ASIC核心语法与基础电路设计电子科技大学,进度,1.绪论 。2.设计流程 。3.模块化硬件与进程模型 。4.信号传输模型 。5.核心语法与基础电路设计 。6.状态机设计 。7.可靠设计与高速设计 。8. 可编程逻辑器件。9.数字信号处理的fpga实现。10.数字系统的RTL设计。,电子科技大学,进度1.绪论 。电子科技大学,程序结构,Library ;- 库,包等的说明Entity ;- 实体说明Architecture;- 结构体描述,电子科技大学,程序结构Library ;- 库,包等的说明电子科技大学,程序例子,a
2、,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u1 isPort( a : in std_logic; b : in std_logic; c : out std_logic);End u1;Architecture behv of u1 isBegin c = a and b;End behv;,u1,电子科技大学,程序例子abcLibrary ieee;u1电子科技大学,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u1 isPort( a : in std_
3、logic; b : in std_logic; c : out std_logic);End u1;Architecture behv of u1 isBegin c = a and b;End behv;,u1,表示使用 ieee库。这是最常用的库说明,绝大多数的VHDL代码都使用这个库。,电子科技大学,程序例子abcLibrary ieee;u1表示使用 iee,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u1 isPort( a : in std_logic; b : in std_logic; c : out
4、std_logic);End u1;Architecture behv of u1 isBegin c = a and b;End behv;,u1,表示使用 ieee库中的std_logic_1164包。最常用的包说明:use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-或 USE IEEE.STD_LOGIC_SIGNED.ALL;,电子科技大学,程序例子abcLibrary ieee;u1表示使用 iee,关于unsigned与signed库,如果use IEE
5、E.STD_LOGIC_UNSIGNED.ALL;则矢量被看作无符号整数;如果use IEEE.STD_LOGIC_SIGNED.ALL;则矢量被看作带符号整数。对于前者,有 (“1001” “0000”)成立;对于后者,有(“1001” “0000”)成立;,电子科技大学,关于unsigned与signed库如果use IEEE.S,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u_and2 isPort( a : in std_logic; b : in std_logic; c : out std_logic);En
6、d u_and2;Architecture behv of u_and2 isBegin c = a and b;End behv;,u1,声明元件的实体。语法:Entity is.End ;,电子科技大学,程序例子abcLibrary ieee;u1声明元件的实体。,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u_and2 isPort( a : in std_logic; b : in std_logic; c : out std_logic);End u_and2;Architecture behv of u_an
7、d2 isBegin c = a and b;End behv;,u1,元件的外部端口。语法:端口名 : 信号方向 数据类型;,注意最后一个端口说明语句不要加分号!,电子科技大学,程序例子abcLibrary ieee;u1元件的外部端口。,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u_and2 isPort( a : in std_logic; b : in std_logic; c : out std_logic);End u_and2;Architecture behv of u_and2 isBegin c =
8、 a and b;End behv;,u1,元件的结构体说明。语法:Architecture of isBeginEnd ;,电子科技大学,程序例子abcLibrary ieee;u1元件的结构体说明,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u_and2 isPort( a : in std_logic; b : in std_logic; c : out std_logic);End u_and2;Architecture behv of u_and2 isBegin c = a and b;End behv;,u
9、1,结构体描述。绝大多数情况下由process构成;一条“光秃”的信号赋值实际上就是一个process,其敏感信号为右边所有信号。,电子科技大学,程序例子abcLibrary ieee;u1结构体描述。电子,程序例子,a,b,c,Library ieee;Use ieee.std_logic_1164.all;Entity u_and2 isPort( a : in std_logic; b : in std_logic; c : out std_logic);End u_and2;Architecture behv of u_and2 isBegin c = a and b;End behv
10、;,u1,电子科技大学,程序例子abcLibrary ieee;u1电子科技大学,关于信号方向,IN,IN,IN,OUT,BUFFER,INOUT,OUT,电子科技大学,关于信号方向INININOUTBUFFERINOUTOUT电,VHDL常用数据类型,Std_logic, std_logic_vector;Integer。,电子科技大学,VHDL常用数据类型Std_logic, std_logic,常用的语法1: if条件判断,IF 条件THEN 顺序处理语句;ELSE 顺序处理语句;END IF ;,注意,if语句只能用在process,函数,子过程之中!,电子科技大学,常用的语法1: i
11、f条件判断IF 条件THEN 注意,if语,If的例子,Process( a )Begin if( a = 1 ) then b = 0; else b = 1; end if;End process;,电子科技大学,If的例子Process( a )电子科技大学,常用的语法2:case分支判断,CASE 表达式 IS WHEN 条件表达式 =顺序处理语句 END CASE;,注意,if语句只能用在process,函数,子过程之中!,电子科技大学,常用的语法2:case分支判断CASE 表达式 IS注意,i,Case的例子,Process( a )Begin case a is when 1
12、= b b = 1; end case;End process;,注意,case的分支必须包含a的所有取值。所以一般最后一个分支往往用others来包含。,A的声明:Signal a : std_logic;,电子科技大学,Case的例子Process( a )注意,case的分支必,CASE语句和IF语句的比较,CASE语句和IF语句都可以完成多选择控制,但是在功能上还是有所区别的。1、在IF语句中,多条件是有优先级区别的。总是先处理最起始的条件,如果不满足再依次处理后面的条件;在CASE语句里所有条件是并行处理的,不存在优先级关系。2、CASE语句应将表达式的所有可能值全部列出来,否则在语
13、法认为是错的。CASE语句中的WHEN OTHERS,即可以使它包含表达式的所有缺省值。,电子科技大学,CASE语句和IF语句的比较CASE语句和IF语句都可以完成,由于CASE语句和IF的特点,它们在某些场合下是可以互换的,例如38译码器的例子。但是对于下面这个例子就不能使用CASE语句。例:,电子科技大学,由于CASE语句和IF的特点,它们在某些场合下是可以互换的,上表是一个优先级编码器的真值表,4个输入之间优先级的大小关系是b0b1b2b3,即当b0、b1同为0时,输出编码为00。换言之,当b00时,其余3个输入任意值该编码器的输出均为”00“。因为CASE语句没有对输入为任意的表示法,
14、故不能使用下面的语句:即:WHEN “XX01“=y=“01”是错误的。所以要正确描述输入之间的这种优先级关系就应选用IF语句。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;,电子科技大学,上表是一个优先级编码器的真值表,4个输入之间优先级的大小关,ENTITY encoder IS PORT (input:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y :OUT STD_LOGIC_VECTOR(1 DOWNTO 0);)END encoder;ARCHITECTURE rtl OF encoder ISBEGIN PROC
15、ESS (input) BEGIN IF (input(0)=0) then y=“00”:; ELSIF (input(1)=0) then y=“01”; ELSIF (input(2)=0) then y=“10”; ELSE y=“11”; END IF; END PROCESS;END rtl;,电子科技大学,ENTITY encoder IS电子科技大学,在IF语句中首先判断的是input(0),其次是input(1)这正好体现了input(0)的优先级最高,只要input(0)0就优先对它编码。,电子科技大学,在IF语句中首先判断的是input(0),其次是input,常用语法3
16、:时钟沿判断,上升沿:If( clkevent and clk = 1 ) then 或者 if( rising_edge( clk ) ) then 下降沿:if( clkevent and clk = 0 ) then 或者 if( falling_edge( clk ) ) then ,电子科技大学,常用语法3:时钟沿判断上升沿:If( clkevent a,时钟沿的例子,Process( clk )Begin if( clkevent and clk = 1 ) then dout = din; end if;End process;,电子科技大学,时钟沿的例子Process( clk
17、 )电子科技大学,常用语法4:port map,语法: InstanceName: componentName port map ( 端口影射表 );例子(位置影射法): u1:u_and2 port map ( din1, din2, dout);,电子科技大学,常用语法4:port map语法:电子科技大学,或者(名称影射法),U1: u_and2 port map ( a = din1, b= din2, c= dout );,din1,din2,dout,a,b,c,电子科技大学,或者(名称影射法)U1: u_and2 port mapdi,其他内容,Vhdl的数据类型Vhdl的运算(
18、逻辑运算,算术 运算,关系运算,并置运算)Vhdl的信号类属性等等。,电子科技大学,其他内容Vhdl的数据类型电子科技大学,基础电路设计,描述风格;基础组合电路设计; 二选一电路,三八译码器,缓冲器,加法器。基础时序电路设计:寄存器计数器,电子科技大学,基础电路设计描述风格;电子科技大学,基础组合电路设计,电子科技大学,基础组合电路设计电子科技大学,例1: 二选一电路设计,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX2to1 IS PORT (S: IN STD_LOGIC; Zero: IN STD_LOGIC; One: IN ST
19、D_LOGIC; Y: OUT STD_LOGIC);,电子科技大学,例1: 二选一电路设计ZeroOneSY电子科技大学,ARCHITECTURE behavior OF MUX2to1 ISBeginProcess(S, Zero, One )Begin - 下一页讲述End processEND behavior;,电子科技大学,ARCHITECTURE behavior OF MUX2t,方法1:直接逻辑运算,Process( S, Zero, One )Begin Y = (not S and Zero ) or ( S and One );End process;,电子科技大学,方
20、法1:直接逻辑运算Process( S, Zero, On,方法2:if语句,Process( S, Zero, One )Begin if( S = 0) then Y = Zero; else Y = One; end if;End process;,电子科技大学,方法2:if语句Process( S, Zero, One,方法3: case语句,Process( S, Zero, One )Begin case S is when 0 = Y Y = One; end case; end process;,电子科技大学,方法3: case语句Process( S, Zero, O,三种方
21、法对比,第一种方法(逻辑运算式)是硬件一一对应的方法,要求设计者对具体硬件电路比较熟悉。后两种方法利用条件分支,比较符合人的常规思维,利于加快设计及减轻维护负担。一般情况下推荐使用后两种的风格。,电子科技大学,三种方法对比第一种方法(逻辑运算式)是硬件一一对应的方法,要,例2:3-8译码器,LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY dec3to8 IS PORT ( sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); en : IN STD_LOGIC; Y : OUT STD_LOGIC_VECTOR (7 D
22、OWNTO 0) );END dec3to8;ARCHITECTURE behavior OF dec3to8 ISBEGIN,电子科技大学,例2:3-8译码器LIBRARY IEEE;电子科技大学,PROCESS(sel,en) BEGIN IF (en=1) THEN CASE sel IS WHEN 000 = Y Y Y Y Y Y Y Y = “01111111”; END CASE;ELSE Y = “11111111”;END IF; END PROCESS;END behavior;,注意不要漏掉此句,电子科技大学,PROCESS(sel,en)注意不要漏掉此句电子科技大,例3
23、 三态门,三态门电路,电子科技大学,例3 三态门三态门电路电子科技大学,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY rei_gate IS PORT (din,en:IN STD_LOGIC; dout:OUT STD_LOGIC); END tri_gate;ARCHITECTURE tri_gate OF tri_gate IS BEGIN tri_gate1:PROCESS(din,en) BEGINIF (en = 1) THEN dout = din;ELSE dout = Z; END IF; END PROCESS; END
24、tri_gate;,电子科技大学,LIBRARY IEEE;电子科技大学,例4:四位全加器设计,dina,dinb,dout,cin,cout,Dina和dinb为两路4 bit的输入,cin为进位输入;Dout为4bit的输出,cout为进位输出。,4,4,4,电子科技大学,例4:四位全加器设计dinadinbdoutcincoutD,则描述为:Architecture behav of u_FullAdder isSignal atemp, btemp, tempout : std_logic_vector( 4 downto 0);Begin Process( cin, dina, di
25、nb, atemp, btemp, tempout ) .End behav;,电子科技大学,则描述为:电子科技大学,Process( cin, dina, dinb, atemp, btemp, tempout)Begin atemp = 0 ,电子科技大学,Process( cin, dina, dinb, atem,代码评析,该代码用5bit半加运算来完成4bit全加,在代码上非常简洁。由综合器自己选择元件库中现成的加法部件来实现加法运算,设计者不必关心其内部电路细节。但是其弱点是,综合器会用5bit加法器来实现,容易造成资源消耗过大。,电子科技大学,代码评析该代码用5bit半加运算来完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 ASIC 设计 应用 核心 语法 基础 电路设计 课件
链接地址:https://www.31ppt.com/p-1664558.html