资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
硬件描述语言及器件 教材:任勇峰等编著VHDL与硬件实现速成 主讲教师:刘文怡08/09学年第1学期教学安排n第1讲:VHDL概述及其开发环境 n第2讲:VHDL的基本元素 n第3讲:VHDL的进程 n第4讲:其它并行语句 n第5讲:VHDL实例剖析 n第6讲:VHDL的顺序描述语句 n第7讲:结构体的描述风格 n第8讲:计数器和状态机 n第9讲:不同风格的状态机举例 n第10讲:VHDL综合举例第7讲: 结构体的描述风格 n1 顺序语句回顾n2 数据流描述法n3 行为描述法n4 结构化描述法n5 异或门的三种描述法的实现对比1 顺序语句回顾n体现的是空间顺序,而不是时间顺序体现的是空间顺序,而不是时间顺序n“整个整个”顺序语句的执行只能是用顺序语句的执行只能是用“时刻时刻”来描述来描述n把每条语句理解为一片电路,在顺序结构中,把每条语句理解为一片电路,在顺序结构中,“不执行不执行”的电路也是存在的!的电路也是存在的!条件语句条件语句y = a when s=”00” else b when s=”01” else c when s=”10” else d; if s=”00” then y=a;elsif s=”01” then y=b;elsif s=” 10” then y=c;else y=d;end if;条件语句小结nIf If 后是条件表达式,记住单信号匹配常量为后是条件表达式,记住单信号匹配常量为“字符字符”,如如 a=1; a=1;而信号向量匹配常量为而信号向量匹配常量为“字符串字符串”,如,如 s=“00”s=“00”。n条件是有优先级的,多个条件都可满足时,执行排在最前条件是有优先级的,多个条件都可满足时,执行排在最前面的条件。面的条件。nIf If 、elseelse、end ifend if容易记住,但容易记住,但“elseif”“elseif”的拼写是错的拼写是错的,正确的是的,正确的是“elsif”“elsif”。n复杂的条件一定要加复杂的条件一定要加括号括号明确优先级。明确优先级。nIfIf语句不能直接用于结构体,但条件代入语句可以。语句不能直接用于结构体,但条件代入语句可以。nIfIf语句可用于语句可用于processprocess中。中。选择语句with s select y yyyy=d;end case;代入号右边是逗号分代入号右边是逗号分隔的多种条件和取值隔的多种条件和取值选择条件的多种表示形式nCaseCase语句中的语句中的whenwhen主要有以下四种表达形式:主要有以下四种表达形式:1 1)when when 条件选择值条件选择值= =语句;语句;2 2)when when 条件选择值条件选择值| | 条件选择值条件选择值 | | | | 条件选择值条件选择值= =语句;语句;3 3)when when 条件选择值条件选择值 to to 条件选择值条件选择值 = =语句;语句;4 4)when others =when others =顺序语句;顺序语句;n选择语句要做到把所有条件都考虑进去,否则会使整个逻选择语句要做到把所有条件都考虑进去,否则会使整个逻辑进入不确定状态。解决方法:辑进入不确定状态。解决方法:when otherswhen othersn各条件地位等同,无优先顺序,除各条件地位等同,无优先顺序,除othersothers外可以互换。外可以互换。循环语句nfor-loop语句语法格式为:语句语法格式为:循环标号:循环标号: for 循环变量循环变量 in 变化范围变化范围 loop 命令语句;命令语句;end loop 循环标号:循环标号:;nwhile 语句语法格式为:语句语法格式为: 循环标号:循环标号: while 条件条件 loop 命令语句;命令语句;end loop 循环标号:循环标号:;循环语句nFor-loopFor-loop语句用于循环次数确定的循环,语句用于循环次数确定的循环,whilewhilelooploop用用于由条件约束的循环(不作要求)。于由条件约束的循环(不作要求)。n对比对比 for-generate for-generate 和和 for-loop for-loop ,二者的效果是一样的,二者的效果是一样的,但前者可以用于结构体,后者不能,只能用于进程。但前者可以用于结构体,后者不能,只能用于进程。n循环变量不必定义,不能给循环变量赋值,但可以把循环循环变量不必定义,不能给循环变量赋值,但可以把循环变量的值作为赋值源。变量的值作为赋值源。2 数据流描述法n数据流描述数据流描述(Dataflow Description) 描述了数据流程的运描述了数据流程的运动路径、运动方向和运动结果动路径、运动方向和运动结果而这些分配方式在而这些分配方式在VHDL语语言中可以分成如下三种:言中可以分成如下三种:n1)直接式的信号代入)直接式的信号代入“=”。n2)条件式信号代入)条件式信号代入“when-else”。n3)选择式信号代入)选择式信号代入“with-select-when”。n前面讲到的简单例子大都是采用数据流描述法。前面讲到的简单例子大都是采用数据流描述法。n二路选择器的电路系统示意图。二路选择器的电路系统示意图。数据流描述法entity mux2 isport(a: in bit_vector(7 downto 0);b: in bit_vector(7 downto 0);c: in bit;y: out bit_vector(7 downto 0);end mux2;architecture mux2_dataflow of mux2 isbegin y=a when c=0 else b;end mux2_dataflow;3 行为描述法n行为描述用于表示输入与输出间转换的行为,它不需要包行为描述用于表示输入与输出间转换的行为,它不需要包含任何结构方面的信息。含任何结构方面的信息。n采用自顶向下的设计方法进行集成电路(硬件)设计时,采用自顶向下的设计方法进行集成电路(硬件)设计时,经常是在设计的最初阶段采用行为描述的方法,将整个电经常是在设计的最初阶段采用行为描述的方法,将整个电路的基本框架结构建立起来,即将整个设计分为若干功能路的基本框架结构建立起来,即将整个设计分为若干功能模块,每个功能模块均使用行为描述语句描述其要实现的模块,每个功能模块均使用行为描述语句描述其要实现的功能。在确定整个设计思路和方法正确之后,再对整个设功能。在确定整个设计思路和方法正确之后,再对整个设计进行细分,将各个功能模块使用结构描述的方法具体实计进行细分,将各个功能模块使用结构描述的方法具体实现,以完成设计。现,以完成设计。n它描述的基本单元是进程(它描述的基本单元是进程(process)语句)语句,通常使用通常使用ifthenelse、caseiswhen等具有顺序性的指令来等具有顺序性的指令来完成。完成。 行为描述法实现比较器nARCHITECTUREbehavioralOF comparatornBEGINn Comp:PROCESS(a,b)n BEGINn IFa bTHEN G 1;n ELSE G 0;n ENDIF;n ENDprocesscomp;nENDENDbehavioralbehavioral; 行为描述法实现寄存器entity reg isport(a:in bit_vector(7 downto 0);clk:in bit;c:in bit;y:out bit_vector(7 downto 0) );end reg;architecture reg_behavior of reg isbeginprocess(clk)beginif (clkevent and clk=1) thenif c=1 theny=a;end if;end if;end process; 当clk上升沿到达且c为高时,输出aend reg_behavior;aycclk4 结构描述法元件组合法n结构化描述用于表示构成硬件的子元件以及这些子元件之结构化描述用于表示构成硬件的子元件以及这些子元件之间的连接关系,或者说结构描述是将硬件电路当成一些相间的连接关系,或者说结构描述是将硬件电路当成一些相互连接的元件集合。互连接的元件集合。n它比行为描述更具体,特别是在描述与硬件的对应关系上,它比行为描述更具体,特别是在描述与硬件的对应关系上,结构描述要比行为描述更为明显、直观。结构描述要比行为描述更为明显、直观。n结构描述的优点是可以利用层级方式,将大型硬件电路分结构描述的优点是可以利用层级方式,将大型硬件电路分解为小电路或模块来设计、仿真和验证。解为小电路或模块来设计、仿真和验证。n描述的步骤是首先声明元件例示语句(描述的步骤是首先声明元件例示语句(component),),其次再说明这些元件间彼此连接的对应关系其次再说明这些元件间彼此连接的对应关系,即各元件间即各元件间的连接映射。的连接映射。 结构描述法n例如,课本图例如,课本图3-4是是2-4译码器,其中,图(译码器,其中,图(a)是逻辑符)是逻辑符号,图(号,图(b)是逻辑图。)是逻辑图。 n(a)2-4译码器逻辑符号;译码器逻辑符号; (b)2-4译码器逻辑图译码器逻辑图 结构描述法n思路:先选择元器件,然后使用元器件搭建逻辑。思路:先选择元器件,然后使用元器件搭建逻辑。n元器件:元器件:非门(反相器)非门(反相器)2 2个个n三输入与门三输入与门4 4个个n首先分别使用首先分别使用VHDLVHDL语言建立两个工程,分别实现反相器和语言建立两个工程,分别实现反相器和三输入与门的逻辑,作为备用元件。(三输入与门的逻辑,作为备用元件。(P62P62,例,例3-25/263-25/26)n其次建立译码器工程,采用其次建立译码器工程,采用componentcomponent语句声明上述两个语句声明上述两个备用元件,在结构体中采用备用元件,在结构体中采用port map port map 语句完成上图中各语句完成上图中各元件的连接。元件的连接。(P63(P63,例,例3-27)3-27)n诀窍:把连线编号,按编号定义使用的信号。诀窍:把连线编号,按编号定义使用的信号。结构描述法n凡从外部引入或输出的信号,定义到凡从外部引入或输出的信号,定义到entityentity中;中;n元件之间的连接信号,需要定义到结构体中。元件之间的连接信号,需要定义到结构体中。n所有连在一起的连线,只能定义一次。所有连在一起的连线,只能定义一次。entity v2to4dec isport(i0,i1,en:in std_logic;y0,y1,y2,y3:out std_logic);end v2to4dec;architecture v2to4dec_structure of v2to4dec iscomponent inv port(i:in std_logic;o:out std_logic);end component;component and3x port(i0,i1,i2 :in std_logic;o:out std_logic);end component;signal i0_not, i1_not:std_logic;beginu1:inv port map (i0, i0_not);u2:inv port map (i1, i1_not);u3:and3x port map (i0_not, i1_not, en, y0);u4:and3x port map (i0, i1_not, en, y1); u5:and3x port map (i0_not, i1, en, y2);u6:and3x port map (i0, i1, en, y3);end v2to4dec_structure;逻辑门的符号表示 异或门电路三种描述风格的实现的比较ABY000011101110异或门的表达式:y = 行为描述法的实现library ieee;use ieee.std_logic_1164.all;entity yihuo1 isport(a,b:in std_logic;y:out std_logic);end yihuo1;architecture yihuo1_behavior of yihuo1 isbeginprocess(a,b)beginif a=b theny=0;elsey=1;end if;end process;end yihuo1_behavior;数据流描述法的实现library ieee;use ieee.std_logic_1164.all;entity yihuo3 isport(a,b:in std_logic;y:out std_logic);end yihuo3;architecture yihuo3_dataflow of yihuo3 isbeginy=a xor b;end yihuo3_dataflow;结构描述法的实现n反相器反相器2 2个,二输入与门个,二输入与门2 2个,二输入或门个,二输入或门1 1个个nnot2, and2, or2not2, and2, or2nentityentity中,二输入信号,一输出信号中,二输入信号,一输出信号n声明声明3 3种元器件种元器件n结构体中声明结构体中声明4 4个内部信号个内部信号作业n1 复习n2 预习实例
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号