【文档说明】可编程ASIC设计及应用-核心语法与基础电路设计-课件.ppt,共(92)页,403.517 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45536.html
以下为本文档部分文字说明:
电子科技大学可编程ASIC核心语法与基础电路设计学时分配:4电子科技大学进度•1.绪论。•2.设计流程。•3.模块化硬件与进程模型。•4.信号传输模型。•5.核心语法与基础电路设计。•6.状态机设计。•7.可靠设计与高速设计。
•8.可编程逻辑器件。•9.数字信号处理的fpga实现。•10.数字系统的RTL设计。电子科技大学程序结构•Library…;--库,包等的说明•Entity…;--实体说明•Architecture…;--结构体描述电子科技大学程序例子ab
cLibraryieee;Useieee.std_logic_1164.all;Entityu1isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endu1;Arc
hitecturebehvofu1isBeginc<=aandb;Endbehv;u1电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;Entityu1isPort(a:instd_logic;b:instd_logic;c:outstd_l
ogic);Endu1;Architecturebehvofu1isBeginc<=aandb;Endbehv;u1表示使用ieee库。这是最常用的库说明,绝大多数的VHDL代码都使用这个库。电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;E
ntityu1isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endu1;Architecturebehvofu1isBeginc<=aandb;Endbehv;u1表示使用ieee库中的std_logic_1164包。
最常用的包说明:useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--或USEIEEE.STD_LOGIC_SIGNED.A
LL;电子科技大学关于unsigned与signed库•如果useIEEE.STD_LOGIC_UNSIGNED.ALL;则矢量被看作无符号整数;•如果useIEEE.STD_LOGIC_SIGNED.ALL;则矢量被看作带符号整数。•对于前者,有(“1001”>“0000”)
成立;•对于后者,有(“1001”<“0000”)成立;电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;Entityu_and2isPort(a:instd_logic;b:instd_logic;c:outstd_logic
);Endu_and2;Architecturebehvofu_and2isBeginc<=aandb;Endbehv;u1声明元件的实体。语法:Entity<实体名字>is….End<实体名字>;电子科技大学程序例子abcLibrar
yieee;Useieee.std_logic_1164.all;Entityu_and2isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endu_and2;Architectur
ebehvofu_and2isBeginc<=aandb;Endbehv;u1元件的外部端口。语法:端口名:信号方向数据类型;注意最后一个端口说明语句不要加分号!电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;Entityu_and
2isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endu_and2;Architecturebehvofu_and2isBeginc<=aandb;Endbehv;u1元件的结构体说明。语法:Architec
ture<结构体名>of<实体名字>isBegin…End<结构体名>;电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;Entityu_and2isPort(a:instd_log
ic;b:instd_logic;c:outstd_logic);Endu_and2;Architecturebehvofu_and2isBeginc<=aandb;Endbehv;u1结构体描述。绝大多数情况下由process构成;一条“
光秃”的信号赋值实际上就是一个process,其敏感信号为右边所有信号。电子科技大学程序例子abcLibraryieee;Useieee.std_logic_1164.all;Entityu_and2isPort(a:instd_l
ogic;b:instd_logic;c:outstd_logic);Endu_and2;Architecturebehvofu_and2isBeginc<=aandb;Endbehv;u1电子科技大学关于信号方向INININOUTBUFFERINOUT
OUT电子科技大学VHDL常用数据类型•Std_logic,std_logic_vector;•Integer。电子科技大学常用的语法1:if条件判断•IF条件THEN•顺序处理语句;•ELSE•顺序处理语句;•ENDIF
;注意,if语句只能用在process,函数,子过程之中!电子科技大学If的例子•Process(a)•Begin•if(a=„1‟)then•b<=„0‟;•else•b<=„1‟;•endif;•Endprocess;
电子科技大学常用的语法2:case分支判断–CASE表达式IS–WHEN条件表达式=〉顺序处理语句–ENDCASE;注意,if语句只能用在process,函数,子过程之中!电子科技大学Case的例子•Process(a)•Begin•caseais•w
hen„1‟=>b<=„0‟;•whenothers=>b<=„1‟;•endcase;•Endprocess;注意,case的分支必须包含a的所有取值。所以一般最后一个分支往往用others来包含。A的声明:Signala:std_logic;电子科技大学CASE语句和IF语句的比较•CASE语
句和IF语句都可以完成多选择控制,但是在功能上还是有所区别的。•1、在IF语句中,多条件是有优先级区别的。总是先处理最起始的条件,如果不满足再依次处理后面的条件;在CASE语句里所有条件是并行处理的,不存在优先级关系。•2、CASE语句应将表达式的所有可能值全部列出来,否则在语法认为是错的
。CASE语句中的WHENOTHERS,即可以使它包含表达式的所有缺省值。电子科技大学•由于CASE语句和IF的特点,它们在某些场合下是可以互换的,例如3-8译码器的例子。但是对于下面这个例子就不能使用CAS
E语句。•例:输入输出b3b2b1b0a1a0---000--0101-01110-11111电子科技大学•上表是一个优先级编码器的真值表,4个输入之间优先级的大小关系是b0>b1>b2>b3,即当b0、b1同为0时,输出编码为00。换言之
,当b0=0时,其余3个输入任意值该编码器的输出均为”00“。因为CASE语句没有对输入为任意的表示法,故不能使用下面的语句:•即:WHEN“XX01“=>y<=“01”是错误的。•所以要正确描述输入之间的这种优先级关系就应选用IF语句。程序如下:•LI
BRARYIEEE;•USEIEEE.STD_LOGIC_1164.ALL;电子科技大学•ENTITYencoderISPORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);y:OUTST
D_LOGIC_VECTOR(1DOWNTO0);)ENDencoder;•ARCHITECTURErtlOFencoderISBEGINPROCESS(input)BEGIN•IF(input(0)=‘0’)theny<=“00”:;ELSIF(input(1)=‘
0’)theny<=“01”;ELSIF(input(2)=‘0’)theny<=“10”;ELSEy<=“11”;ENDIF;•ENDPROCESS;ENDrtl;电子科技大学•在IF语句中首先判断的是input(0),其次是inp
ut(1)……这正好体现了input(0)的优先级最高,只要input(0)=„0‟就优先对它编码。电子科技大学常用语法3:时钟沿判断•上升沿:If(clk’eventandclk=‘1’)then…•或者if(
rising_edge(clk))then…•下降沿:if(clk’eventandclk=‘0’)then…•或者if(falling_edge(clk))then…电子科技大学时钟沿的例子•Process(clk)•Begin•if(clk‟eventandclk=„1‟)then•dout
<=din;•endif;•Endprocess;电子科技大学常用语法4:portmap•语法:InstanceName:componentNameportmap(端口影射表);•例子(位置影射法):u1:u_and2portmap(din1,din2,
dout);电子科技大学或者(名称影射法)•U1:u_and2portmap•(a=>din1,b=>din2,c=>dout);din1din2doutabc电子科技大学其他内容•Vhdl的数据类型•Vhdl的运算(逻辑运算,算术运算,关系运算,并置运算)•
Vhdl的信号类属性•等等。电子科技大学基础电路设计•描述风格;•基础组合电路设计;二选一电路,三八译码器,缓冲器,加法器。•基础时序电路设计:–寄存器–计数器电子科技大学基础组合电路设计电子科技大学例1:二选一电路设计•
LIBRARYIEEE;•USEIEEE.STD_LOGIC_1164.ALL;•ENTITYMUX2to1IS•PORT(S:INSTD_LOGIC;•Zero:INSTD_LOGIC;•One:INSTD_LOGIC;•Y:OUTSTD_LOGIC);ZeroOneSY电子科技大学•
ARCHITECTUREbehaviorOFMUX2to1IS•Begin•Process(S,Zero,One)•Begin•……--下一页讲述•Endprocess•ENDbehavior;ZeroOneSY电子科技大学方法
1:直接逻辑运算•Process(S,Zero,One)•Begin•Y<=(notSandZero)or(SandOne);•Endprocess;ZeroOneSY电子科技大学方法2:if语句•Process(S,
Zero,One)•Begin•if(S=„0‟)then•Y<=Zero;•else•Y<=One;•endif;•Endprocess;ZeroOneSY电子科技大学方法3:case语句•Process(S,Zero,One
)•BegincaseSiswhen„0‟=>Y<=Zero;whenothers=>Y<=One;endcase;endprocess;电子科技大学三种方法对比•第一种方法(逻辑运算式)是硬件一一对应的方法,要求设计者对具体硬件电路比较
熟悉。•后两种方法利用条件分支,比较符合人的常规思维,利于加快设计及减轻维护负担。•一般情况下推荐使用后两种的风格。电子科技大学例2:3-8译码器•LIBRARYIEEE;•USEIEEE.std_lo
gic_1164.all;••ENTITYdec3to8ISPORT(sel:INSTD_LOGIC_VECTOR(2DOWNTO0);en:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdec3to8;••ARCHITECTUREbehavior
OFdec3to8IS•BEGIN电子科技大学•PROCESS(sel,en)•BEGINIF(en='1')THENCASEselISWHEN"000"=>Y<=“11111110”;WHEN"001"
=>Y<=„11111101”;WHEN"010"=>Y<=“11111011”;WHEN"011"=>Y<=“11110111”;WHEN"100"=>Y<=“11101111”;WHEN"101"=>Y<=“11011111”;WHEN"110"=>Y<=“10111111”;WHENothe
rs=>Y<=“01111111”;ENDCASE;ELSEY<=“11111111”;ENDIF;•ENDPROCESS;•ENDbehavior;注意不要漏掉此句电子科技大学例3三态门三态门电路电子科技大学•LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.
ALL;•ENTITYrei_gateISPORT(din,en:INSTD_LOGIC;dout:OUTSTD_LOGIC);ENDtri_gate;•ARCHITECTUREtri_gateOFtri_gateISBEGINtri_gate1:PROCESS(din,en)BEGIN•I
F(en=‟1‟)THENdout<=din;ELSEdout<=‟Z‟;ENDIF;•ENDPROCESS;•ENDtri_gate;电子科技大学例4:四位全加器设计dinadinbdoutcincoutDina和dinb为两路4bit的输
入,cin为进位输入;Dout为4bit的输出,cout为进位输出。444电子科技大学•则描述为:•Architecturebehavofu_FullAdderis•Signalatemp,btemp,
tempout:std_logic_vector(4downto0);•Begin•Process(cin,dina,dinb,atemp,btemp,tempout)….•Endbehav;电子科技大学•Pr
ocess(cin,dina,dinb,atemp,btemp,tempout)•Begin•atemp<=„0‟&dina;•btemp<=„0‟&dinb;•tempout<=cin+atemp+btemp;•dout<=tempout(3downto0);•c
out<=tempout(4);•Endprocess;电子科技大学代码评析•该代码用5bit半加运算来完成4bit全加,在代码上非常简洁。•由综合器自己选择元件库中现成的加法部件来实现加法运算,设计者不必关心其内部电
路细节。•但是其弱点是,综合器会用5bit加法器来实现,容易造成资源消耗过大。电子科技大学改进方法•使用1bit全加器构建abdcincoutFullAdder1b电子科技大学1bit全加器•Process(a,b,cin)•Begin•d<=
axorbxorcin;•cout<=(aandcin)or(bandcin)•or(aandb);•Endprocess;电子科技大学4bit全加器abdcincoutabdcincoutabdcincoutabdcincouttemp1temp2temp3a(
3)a(2)a(1)a(0)b(3)b(2)b(1)b(0)cind(3)d(2)d(1)d(0)cout电子科技大学代码实现•总框架:•EntityFullAdder4bis•….•EndFullAdder4b;•Architecture
structofFullAdder4bis]•Signaltemp1,temp2,temp3:std_logic_vector(3downto0);•Begin•--此处代码下一页说明.•Endstruct;Port(a:instd_logic_vector(3downto0);b:in
std_logic_vector(3downto0);cin:instd_logic;d:outstd_logic_vector(3downto0);cout:outstd_logic;);电子科技大学代码实现•总框架:•EntityFullAdder4bis•….•E
ndFullAdder4b;•ArchitecturestructofFullAdder4bis•Signaltemp1,temp2,temp3:std_logic_vector(3downto0);•Be
gin•--此处代码下一页说明.•Endstruct;电子科技大学•U0:FullAdder1bportmap(•a(0),b(0),cin,d(0),temp1);•U1:FullAdder1bportmap(•a(1),b(1),temp1,d(0),temp2);•U2:FullAd
der1bportmap(•a(2),b(2),temp2,d(0),temp3);•U3:FullAdder1bportmap(•a(3),b(3),temp3,d(0),cout);电子科技大学•由上可见,硬件描述语言配合了完善的
综合工具后,可以使得设计者从烦琐的电路细节中解放出来,专心于系统的功能架构;•但是由于综合工具智能化程度的局限性,有时综合工具综合出来的电路并不一定是最优的,这就需要设计者在适当的时候在较低的层次上进行描述,指导综合工具综合出性能或面积优化的代码。电子科技大学对比两种加法器描述方法•前一种方法便于
使用并行进位逻辑,而后一种方法是串行进位,所以前者速度一般要比后者快;•但是在位宽比较大的时候,并行进位的资源消耗会快速上升。•实验发现,4bit的并行加法器和串行加法器的资源消耗差不多,因此工程应用中,宽bi
t的加法器经常采用4bit的并行加法器级联而成。电子科技大学易犯错误电子科技大学实例分析•假设,要描述一个与门电路:•有很多种描述方法。&aby电子科技大学方法1:直接信号赋值•在结构体内,很直观地直接进行赋值:•Arch
itecturebehavofAnd2is•Begin•y<=aandb;•Endbehav;电子科技大学方法2:进程直接信号赋值•这种方法直接等效于方法1。•注意要将a和b都加入敏感信号表。•ArchitecturebehavofAnd2is•Begin
•process(a,b)•begin•y<=aandb;•endprocess;•Endbehav;电子科技大学方法3:进程if条件赋值•经过分析发现,实际上y大部分情况下为0,只有a和b都为1的时候,y才会输出1。所以描述如下:•Architecturebeh
avofAnd2is•Begin•process(a,b)•begin•if(a=„1‟andb=„1‟)then•y<=„1‟;•endif;•endprocess;•Endbehav;这个描述是错误的,为什么?电子科技大学方法4:
进程if条件赋值•经过分析发现,a=„1‟时,y会跟踪b的变化,即y<=b。•ArchitecturebehavofAnd2is•Begin•process(a,b)•begin•if(a=„1‟)then•y<=b;•e
ndif;•endprocess;•Endbehav;这个描述还是错误的,为什么?电子科技大学基础时序电路设计电子科技大学例1:基本的触发器•1、D触发器(DFF)电路设计•例6-17:•正边沿触发器的DFF设计(寄存器)•其VHDL描述如下:dqclk电子科技大学•LIBR
ARYIEEE;•USEIEEE.STD_LOGIC_1164.ALL;•ENTITYdff_logicIS•PORT(d,clk:INSTD_LOGIC;•q:OUTSTD_LOGIC);•ENDdff_logic;电子科技大学•ARCHITECTURE
exampleOFdff_logicIS•BEGIN•PROCESS(clk)•BEGIN•IF(clk’EVENTANDclk=’1’)THEN•q<=d;•ENDIF;•ENDPROCESS;•END
example;电子科技大学例2:把上例中的clk‟EVENT条件去掉并把d加到进程敏感表中。•就可得到一个电平敏感D触发器(即锁存器)•PROCESS(clk,d)•BEGIN•IF(clk=‘1’)THEN•q<=d;•ENDIF;•ENFPROCESS;你突然回忆到了什
么….电子科技大学在组合电路描述中注意补全所有条件•上述与门方法3的正确描述:•process(a,b)•begin•if(a=„1‟andb=„1‟)then•y<=„1‟;•else•y<=„0‟;--!!•endif;•endprocess;
电子科技大学•上述与门方法4的正确描述:•process(a,b)•begin•if(a=„1‟)then•y<=b;•else•y<=„0‟;--!!•endif;•endprocess;电子科技大学锁存和寄存的差别:•区别:–锁存是电平起作用–寄
存是时钟有效沿起作用•!!在设计中,应该尽量避免使用锁存!因为锁存要占去大量的触发器资源,而且会对电路带来某种不稳定的隐患。•在组合逻辑的组合进程中,条件语句描述时应该指定所有条件下所有输出的状态,以避免锁存。比如if/case语句的所有分支必须定义全部
的输出才可能避免出现锁存。电子科技大学条件完整但仍然生成锁存器的描述•ArchitecturebehavofAnd2is•Begin•process(a,b)•begin•if(a=„1‟)then•y<=b;•else•y<=y;--保持原值,导致综合器生成锁存器!•endif;•endp
rocess;•Endbehav;电子科技大学时序电路设计中的复位/置位•异步复位:•Process(clk,areset)•Begin•if(areset=„1‟)then•q<=„0‟;•elsif(clk‟eventandclk=„1‟)then•q<=d;•endif;
•Endprocess;异步条件判断在时钟沿判断语句之前。不管时钟沿是否到达,只要异步信号有效,则后面的q<=„0‟将被执行。•--注意异步复/置位信号要放在敏感信号表中电子科技大学时序电路设计中的复位/置位•同步
复位:•Process(clk)•Begin•if(clk‟eventandclk=„1‟)then•if(reset=„1‟)thenq<=„0‟;•else•q<=d;•endif;•endif;•En
dprocess;•同步条件判断在时钟沿判断语句之后,当reset有效时,不会立即进行复位,而是在时钟沿处复位。电子科技大学异步复位(左)和同步复位(右)波形clkresetdqclkaresetdq有利于整个系统各模块的同时复位/置位(初
始化)电子科技大学例3:带异步复位和异步置位的寄存器设计•PROCESS(clk,reset,preset)•BEGIN•IF(reset=„1‟)THEN•q〈=„0‟;•ELSIF(preset=„1‟)TH
EN•q〈=„1‟;--本例中,reset的优先级高于preset•ELSIF(rising_edge(clk))THEN•q〈=d;•ENDIF;•ENDPROCESS;电子科技大学例4:带时钟使能的寄存器设计Process(clk)•Begin•
if(clk‟eventandclk=„1‟)then•if(en=„1‟)then•q<=d;•endif;•endif;•Endprocess;这里是一个条件不完整,但是不会生存锁存器的例子电子科技大学例5:八位带异步清除和时钟使能的寄存器•LIBRARYIEEE;•USE
IEEE.std_logic_1164.all;•ENTITYreg8bitIS•PORT(•clk:INSTD_LOGIC;•reset:INSTD_LOGIC;•en:INSTD_LOGIC;•din:INSTD_LOGIC_VECTOR(7DOWNTO0);•dout:OUTSTD_
LOGIC_VECTOR(7DOWNTO0));•ENDreg8bit;电子科技大学•ARCHITECTUREbehaviorOFreg8bitIS•Begin•process(clk,reset)•begin•if(reset=‘0’)then--这里低电平有
效dout<=(others=>‘0’);•elsif(clk’eventandclk=‘1’)then•if(en=‘1’)then--时钟使能•dout<=din;•endif;endif;endpr
ocess;ENDbehavior;电子科技大学沿判断后的信号赋值都是寄存器赋值•Process(clk)•Begin•if(clk‟eventandclk=„1‟)then•sig1<=din;•sig2<=sig
1andsig;•endif;•Endprocess;clksig1sigdinsig2电子科技大学对比沿判断之后的变量赋值•Process(clk)•Variablevar:std_logic;•Begin•if(clk‟eventandclk
=„1‟)then•var:=din;•dout<=varandsig;•endif;•Endprocess;sigDin(var)sig2clk电子科技大学但是,并不是时钟沿判断后的变量赋值都不会产生寄存器•Process(clk)•Varialbevar:std_logic
;•Begin•if(clk‟eventandclk=„1‟)then•var:=din;•endif;•dout<=var;•Endprocess;sig2clkdin电子科技大学例子:二进制同步计数器•
同步计数器就是指在时钟脉冲的作用下,组成计数器的各个触发器的状态同时发生变化的一类计数器。•先来看一个比较简单的计数器:•四位二进制计数器,它带有异步复位控制端、同步预置控制端、同步使能端和进位输出瑞。这种四位二进制计数器的电路框图如图所示。其中:•
输入端口R是异步复位控制端•输入端口S是同步预置控制端•输入端口EN是同步使能端•输出瑞口CO是进位输出端电子科技大学四位二进制计数器的电路框图电子科技大学四位二进制计数器的功能表电子科技大学在功能表中•没有给出进位输出端口•CO的功能描述,它的功能是:•当四位二进制计
数器计数为”1111”时,如果遇到时钟上升沿,它的输出为’1’。电子科技大学四位二进制计数器的VHDL描述•如图所示的四位二进制计数器的VHDL描述如下。•源代码中的同步预置值是根据实际设计要求来定的,这里我们假定为”1010“电子科技大学•libraryieee;u
seieee.stdic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;•entitycounterisport
(clk,areset,sset,enable:inStd_logic;cout:outstd_logic;q:bufferstd_logic_vector(3downto0));endcounter;•architecurertlofcounteri
s•begin电子科技大学•process(clk,areset)•beqin•if(areset='1')thenq<=(othsrs=>'0');cout<='0';•elsif(clk’eventandclk='1')then•if
(sset='1')thenq<=”1010”;cout<=‘0’;•elsif(enable='1')then•if(q=“1111”)then--计数上限。cout<=„1‟;q<=“0000”;•elsecout<='0';q<=q+1;•endif;•endif;•en
dif;•endprocess;endrtl;请画出cout输出‘1’时的波形,注意cout脉冲对准的是q为“1111”时,还是q为“0000”时。电子科技大学•process(clk,areset,q)•beqin•if(areset='1')then•q<=(othsrs=>'0');•
elsif(clk’eventandclk='1')then•if(sset='1')then•q<=”1010”;•elsif(enable='1')then•q<=q+1;•endif;•endif;•endif;•if(q=
“1111”)then--计数上限。•cout<=„1‟;•else•cout<=„0‟;•endif;•endprocess;如果把代码改成这种形式呢,波形又如何?注意!电子科技大学•另外,注意包引用中的std_logic_uns
igned:加法运算用到。•q的信号方向为buffer,因为它既是输出,又是反馈回来做内部模块的输入,如q<=q+1;If(q…)等电子科技大学带有异步复位reset、异步预置preset信号和时钟使能信号ce的8位计数器•LIBRARYIEEE;•USEIEEE.
STD_LOGIC_1164.ALL;•USEIEEE.STD_LOGIC_UNSIGNED.ALL;--!!•ENTITYasyn_load_cntIS•PORT(clk,ce,reset,preset,l
oad:•INSTD_LOGIC;•d:INSTD_LOGIC_VECTOR(7DOWNTO0);•q:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));•ENDasyn_load_cnt;电子科技大学•ARCHITECTUREbehavioralOFasyn_load_c
ntIS•BEGIN电子科技大学•PROCESS(clk,reset,preset)•BEGIN•IF(reset=‘1’)THENq<=(others=>‘0’);•ELSIF(preset=‘1’)THEN(others=>‘1’);•ELSEIF(clk’eventANDclk=‘1’)
THEN•IF(ce=’1’)THEN•q<=q+‘1’;•ENDIF;ENDIF;ENDPROCESS;ENDbehavioral;电子科技大学小结(1)•VHDL核心语法:–程序结构;–std_logic_unsigned与
std_logic_signed的区别;–信号方向,buffer与inout的区别;–if条件判断,case分支判断(注意others),if与case的区别(前者带有优先级);–for循环(自学);–时钟沿判断;
–portmap。电子科技大学小结(2)•基础组合电路设计–常用方法:直接逻辑运算,if/case条件分支,portmap模块拼接,及这几种方法的混合;–三态门中的高阻,及其应用;–易犯错误:if/case条件分支不完整导致锁存器的生成;电子科技大学小结(3)•基础时序电路设计–寄存器与锁存
器的描述及其时序区别;–异步复位/置位与同步复位/置位在描述方法上和时序上的区别;–时钟使能;–沿判断后的信号赋值都是寄存器赋值。注意其时序特点;–沿判断后的变量赋值可能生成寄存器,也可能不生成。