版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VHDL基本语句基本语句 并行信号赋值语句 进程语句 条件信号赋值语句 块语句 并行过程调用语句 生成语句 元件例化语句 赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句 并行语句并行语句 顺序语句顺序语句 执行顺序与书写顺序基本一致。 只能出现在进程和子程序中。 执行方式与书写顺序无关。 每一并行语句内部语句的运行方式 可以有两种不同的方式: 并行执行方式和顺序执行方式 分类: 特点: VHDL设计实体内的数据传递以及对端口界面外部数据的读写 都必须通过赋值语句的运行来实现。 功能是将一个值或表达式的运算结果传递给某一数据对象。 赋值语句有两种: 信号赋值语句和变量赋值
2、语句 三部分组成:赋值目标,赋值符号,赋值源 赋值语句赋值语句 注 赋值目标和赋值源的数据类型必须一致。 区别 全局性和局部性。延时性。 顺序语句顺序语句 1、用于门闩控制的语句:、用于门闩控制的语句: 格式:格式: IF 条件 THEN END IF ; ARCHITECTURE text_dff OF dff IS BEGIN P1: PROCESS (clk) BEGIN IF (clk event and clk=1 ) THEN q=d; END IF; END PROCESS p1; END text_dff; 2、用于二选一控制的、用于二选一控制的IF 语句:语句: IF 条件
3、THEN ; ELSE ; END IF; 3、用于多选控制的、用于多选控制的IF语句:语句: IF 条件1 THEN ; ELSIF 条件2 THEN ; : ELSIF 条件n-1 THEN ; ELSE ; END IF; IF语句语句 例例 格式格式 格式格式 作用:作用:描述总线行为、编码器和译码器的结构 格式:格式: CASE 条件表达式 IS WHEN 选择值 =顺序处理语句 WHEN 选择值 =顺序处理语句 . END CASE; CASE语句语句 执行 :首先计算表达式的值,然后根据条件句中与之相同的选择值 执行对应的顺序语句,最后结束CASE语句。 表达式可以是一个整数或枚
4、举类型的值或数组 选择值有四种表达方式: 单个数值 , 如 :6 数值选择范围, 如: (2 TO 4)表示取值为2,3,4。 并列数值 如: 3 5 表示取值为3或着5 混合方式 以上三种方式的混合 ARCHITECTURE example OF mux4 IS BEGIN PROCESS (sel) BEGIN CASE sel IS WHEN 0= q q q q NULL; END CASE; END PROCESS; END example; CASE中的选择值必须在表达式的取值范围内; CASE语句是无序的,所有表达式值都是并行 处理;而IF语句是有序的,最起始、最优先 的先处理;
5、 可以有很多分支,但OTHERS分支只能有一个, 且只能位于最后;用来使所有选择值能涵盖表 达式的所有取值,以免插入不必要的锁存器 CASE语句至少要包含一个条件语句。 每一选择值只能出现一次。 注注 例例 SIGNAL value : INTEGER RANGE 0 TO 15 ; SIGNAL out1 : STD_LOGIC ; . CASE VULUE IS END CASE ; . CASE value IS WHEN 0 = out1 out1 out1 out1 = 0 ; END CASE ; -缺少以WHEN引导的条件句 -value215的值未包括进去 -选择值中510的值
6、有重叠 例例 与与IF 语句比较语句比较: CASE语句的执行过程是独立的,次序是不重要的,更接近于并行方式。 IF 语句是一个逐项条件顺序比较的过程。 CASE 语句只有条件相或的功能。 IF 语句有条件相与的功能。 WAIT 无限等待 WAIT ON 敏感信号量变化 WAIT UNTIL 表达式 表达式成立时进程启动 WAIT FOR 表达式 时间到,进程启动 由WAIT语句同步的进程: P1: PROCESS VARIABLE temp: Bit; BEGIN temp:= a or b; C = NOT temp; WAIT ON a, b ; END POCESS P1; 1. WA
7、IT语句和敏感信号不能同时存 在一个进程里; 2 WAIT FOR 0ns 和WAIT一样, 产生无限循环,一般不用。 WAIT语句语句 书写格式:书写格式: 同步进程的执行同步进程的执行 注注 例例 WAIT语句 (1), WAIT ; (2), WAIT ON 信号表 ; (3), WAIT UNTIL 条件表达式 ; (4), WAIT FOR 时间表达式 ; (1)中,未设置停止挂起条件的表达式,表示永远挂起。 (2)为敏感信号等待语句,在信号表中列出的信号是等待语句的敏感 信号,当处于等待状态时,敏感信号的任何变化将结束挂起,再次 启动进程。 例: SINGAL s1,s2: STD
8、_LOGIC ; PROCESS BEGIN . WAIT ON s1,s2 ; END PROCESS ; 执行此例的所有语句后,进程 在WAIT语句处被挂起,直到 S1 s2中任一信号发生改变, 进程才重新启动。 格式 进程中,执行到WAIT语句,运行程序将被挂起,直到满足此语句 设置的结束挂起条件后,才重新执行进程。 (3)WAIT UNTIL结构为条件等待语句,相对于(2)WAIT ON结构, 条件语句又多了一种重新启动进程的条件, 即被此语句挂起的进程需顺序满足下面两个条件进程才能脱离挂起状态。 a,在条件表达式中所含的信号发生了改变。 b,此信号改变后,且满足WAIT语句所设的条件
9、。 两个条件缺一不可,而且必须按照以上顺序来完成。 例:. WAIT UNTIL enable =1 ; 进程的启动条件是 enable出现一个上跳信号沿. 格式: WAIT UNTIL 信号=VALUE ; WAIT UNTIL 信号EVENT AND 信号=VALUE; WAIT UNTIL NOT 信号STABLE AND 信号=VALUE; WAIT UNTIL CLK=1 ; WAIT UNTIL risiing_edge(clock); WAIT UNTIL NOT clockSTABLE AND clock=1; WAIT UNTIL clock =1 AND clockEVEN
10、T ; 例: 进程启动条件为时钟上跳沿的表达 LOOP语句语句 1、单个、单个 LOOP语句:语句: 格式格式 标号 :LOOP END LOOP 标号; 例: L2 : LOOP a:= a+ 1 ; EXIT L2 WHEN a10 ; - 当a10时跳出循环 END LOOP L2 ; 标号可任选 2、FOR LOOP语句:语句: 标号 :FOR 循环变量 IN 循环次数范围 LOOP END LOOP 标号; LIBRARY IEEE; USE IEEE.std_logic_1164.all; ENTITY parity_check IS PORT (a: IN std_loginc_
11、vector (7 downto 0); y: OUT std_logic); END parity_check; ARCHITECTURE example OF parity_check IS BEGIN P1: PROCESS ( a ) VARIABLE tmp: std_logic; BEGIN tmp := 0; FOR i IN 0 TO 7 LOOP tmp := tmp XOR a ( i ); END LOOP; y = tmp; END PROCESS P1; END example; 循环变量i是一个临时变量,是LOOP语 句的局部变量,不必事先定义, 由LOOP语句自动
12、定义. LOOP 循环的范围最好以常数表示 格式格式 注注 例例 作用:作用: LOOP语句执行中进行有条件的或无条件的转向控制. 格式:格式: 三种三种 1, NEXT -无条件终止当前循环,跳回到本次循环LOOP语句处,开始下一次循环 2, NEXT LOOP 标号标号; 3, NEXT WHEN ; -如果条件表达式值为真,执行NEXT语句,进入跳转操作,否则继续向下执行. WHILE data 1 LOOP data = data 2 NEXT WHEN data =3; data_T =data_T * data; END LOOP; N1: FOR i IN 10 DOWN 1 L
13、OOP N2: FOR j IN 10 DOWN i LOOP NEXT N1 WHEN i=j; matrix( i ,j) := i*j+1; END LOOP N2; END LOOP N1; 条件成立无标号 跳出循环 条件成立,跳到N1处 条件不成立,继续内 循环N2的执行 例例 NEXT语句语句 格式格式: 三种 1, EXIT ; 2, EXIT LOOP 标号; 3, EXIT 标号 WHEN 条件; EXIT语句语句 注注 与NEXT语句有十分相似的语句格式和跳转功能, 都是LOOP 语句的内部循环控制语句. NEXT语句跳转的方向是LOOP标号指定的LOOP语句处,没有标号时
14、, 跳转到当前LOOP语句的循环其始点. EXIT语句跳转的方向是LOOP标号指定的LOOP语句的结束处, 即完全 跳出指定的循环.并开始执行此循环外的语句. NEXT语句转向语句转向LOOP语句的起始点语句的起始点,EXIT语句转向语句转向LOOP语句的终点语句的终点 子程序调用语句子程序调用语句 1,过程调用: 执行一个给定名字和参数的过程. 格式: ( 形参名= 实参表达式) ; 实参表达式称为实参,可以是一个具体的值,也可以是一个标识符. 行参名为当前欲调用的过程中已说明的参数名. 步骤: (1),将IN 和INOUT 模式的实参值副给欲调用的过程中与它们对应的形参 (2),执行这个过
15、程 (3),将过程中IN 和INOUT 模式的形参值返回给对应的实参. 2,函数调用: 与过程调用十分类似. 区别: 调用函数将返回一个指定数据类型的值. 例: . ARCHITECTURE exmp OF sort IS BEGIN PROCESS (in_array) PROCEDURE swap(data : INOUT data_array; -swap的形参名为 low,high : IN INTEGER ) IS data,low,high VARIABLE temp : data_element; BEGIN -描述本过程的功能 IF (data (low) data(high)
16、 THEN -检测数据 temp:= data(low); data(low) := data(high); data(high) := temp END IF ; END swap; -过程swap定义结束 VARIABLE my_array : data_array; BEGIN -进程开始 my_array := in_array; -输入值读入变量 swap(my_array , 1, 2); -my_array,1,2,是对应于data,low,high的实参 swap(my_array , 2, 3); -位置关联法调用,第2,3 元素调换 swap(my_array , 1, 2
17、); -位置关联法调用,第1,2元素再调换 out_array RETRUN True; WHEN others = NULL; END CASE; 作用: 只能用于子程序中, 执行返回语句将结束子程序的执行,无条件的跳转至子程序的结束处END. 例: 过程中 PROCEDURE rs (SIGNAL s ,r :IN STD_LOGIC ; SIGNAL q,nq : INOUT STD_LOGIC) IS BEGIN IF(s =1 AND r=1) THEN REPORT “Forbidden state :s and r are quual to1 ” ; RETURN; -中断过程
18、. END PROCEDURE rs; 例: 函数中 FUNCTION opt (a ,b ,opr :STD_LOGIC) RETURN STD_LOGIC IS BEGIN IF (opr =1 ) THEN RETURN (a AND b) ; -返回值 ELSE RETURN (a OR b ) ; END IF ; END FUNCTION opt; 进程语句)进程语句) PROCESS语句不是一条语句,而是一段程序;语句不是一条语句,而是一段程序; 特点特点: 1) 进程内部的所有语句都是顺序执行的;进程内部的所有语句都是顺序执行的; 2)多进程之间是并行执行的,并可访问构造体或实
19、体中所定义的信号;)多进程之间是并行执行的,并可访问构造体或实体中所定义的信号; 3)进程的启动是由敏感信号表中的敏感信号来触发或用)进程的启动是由敏感信号表中的敏感信号来触发或用WAIT语句等语句等 待一个触发条件来触发;待一个触发条件来触发; 4)各进程之间的通信是由信号来传递的。)各进程之间的通信是由信号来传递的。 进程名:进程名: PROCESS 敏感信号表敏感信号表 变量说明语句:变量说明语句: : BEGIN : 顺序说明语句顺序说明语句 : END PROCESS 进程名进程名; 一般格式:一般格式: PROCESS 注注 并行语句并行语句 利用进程语句设计的半加器:利用进程语句
20、设计的半加器: ARCHITECTURE behav OF half_adder IS BEGIN Padder: PROCESS(a ,b) BEGIN sum = a XOR b AFTER 5ns; carry = a AND b AFTER 5ns; END PROCESS Padder; END behav; 进程是一个无限循环的硬件 行为的描述 例例1 注注 ENTITY dff IS PORT ( d, CLK: IN Bit; q: OUT Bit); END dff; ARCHITECTURE register OF dff IS BEGIN p1: PROCESS (CLK
21、) BEGIN IF CLK =1 THEN Q =d AFTER 10ns; END IF; END PROCESS p1; END register; 实体名为dff D触发器的输入端口 D触发器的输出端口 结构体名为register 敏感信号为CLK 如果时钟由0变1时, 延时10ns将 信号d送输出口q 例例2 形式:形式: 三种 1, 简单信号赋值语句 2, 条件信号赋值语句 3, 选择信号赋值语句 特点:特点: 赋值目标都必须是信号。 所有赋值语句在结构体内的执行是同时发生的。 每一个信号赋值语句都相当一条缩写的进程语句。 可以直接出现在结构体中。 并行信号赋值语句并行信号赋值语句
22、 一、简单信号赋值语句:一、简单信号赋值语句: 格式:格式:赋值目标 = 表达式; 例: . d = data0; q = a OR ( b AND c) q = d AFTER 10 ns 特性特性:赋值目标的数据对象必须是信号, 它的数据类型必须与赋值符号右边的 表达式的数据类型一致。 并行执 行 二、条件信号赋值语句:二、条件信号赋值语句: 目标信号= 表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE : 表达式 n-1 WHEN 条件n-1 ELSE 表达式;例:例: ARCHITECTURE data_flow OF xor_gate IS BEGIN C
23、= 0 WHEN a=0 AND b=0 ELSE 1 WHEN a=0 AND b=1 ELSE 1 WHEN a=1 AND b=0 ELSE 0 WHEN a=1 AND b=1 ELSE 0; END data_flow; 格式格式 功能: 每一赋值条件是按书写的先后关系 逐项测定的.与IF语句有十分相似的 顺序性 最后一个表达式可以不跟条件子句, 表示以上各条件都不满足时,将表达 式赋给目标信号. ELSE不可省. 由于条件测试的顺序性.第一子句有最高赋值优先权. 三、选择信号赋值语句:三、选择信号赋值语句: WITH 选择表达式 SELECT 目标信号= 表达式1 WHEN 条件1
24、 表达式2 WHEN 条件2 : 表达式n WHEN 条件n 格式格式 功能功能: 选择信号赋值语句本身不能用在进程中,但其功能与进程中的CASE语句相似. CASE语句的执行依赖于进程中敏感信号的改变而启动进程.而且要求CASE 语句各子句的条件不能有重复,必须包容所有的条件. 选择信号语句也有敏感量,即选择表达式.对子句条件的测试具有并行性. 不允许有条件重复的现象,也不允许存在条件涵盖不全的情况. 例例 ARCHITECTUTE archmux IS BEGIN WITH s SELECT x= a WHEN “00”, b WHEN “01”, c WHEN “10”, d WHEN
25、OTHERS; END archmux; 选择信号赋值语句的每一子句结尾是逗号,最后一句是分号; 条件赋值语句的每一子句结尾没有任何标点,只有最后一句有分号. 注注 BLOCK语句语句 功能:功能:结构体当中的子模块,改善并行语句及其结构的可读性 格式格式 块名:BLOCK(块保护表达式) 接口说明 类属说明 BEGIN 并行语句 END BLOCK块标志 对BLOCK的接口设置以及与外界信号的连接状况说明 BLOCK语句本身属于并行语句,BLOCK语句中包含的语句也是并行语句. 仅仅是形式上的划分,而非功能上的改变. 注注 例例 ENTITY half IS PORT ( a, b : IN
26、 Bit; s, c : OUT Bit); END half; ARCHITECTURE addr1 OF half IS BEGIN s = a XOR b; c = a AND b; END addr1; ARCHITECTURE addr2 OF half IS BEGIN example: BLOCK PORT ( a, b: IN Bit; s, c : OUT Bit); PORT MAP (a,b,s,c); BEGIN p1: PROCESS (a, b) BEGIN s = a XOR b; END p1; P2: PROCESS (a, b) BEGIN c 连接实体端口
27、名) 注注 用于结构体,包集合,块的说明部分 一、参数语句一、参数语句 1、参数传递语句(GENERIC) 用于不同层次设计模块之间信息的传递和参数的传递 使器件模块化和通用化 2、参数映射语句(GENERIC MAP) 比较比较 : 元件例化产生一个新的设计层次. 子程序调用只对应与当前层次 的一个部分. 例例 ENTITY example IS GENERIC (rise, fall: TIME); PORT(d0,d1,d2,d3: IN BIT; q: OUT BIT); END example; ARCHITECTURE and2_3 OF example IS COMPONENT
28、and2 GENERIC (rise, fall: TIME); PORT (a, b: IN BIT; c: OUT BIT); END COMPONENT; SINGAL u1,u2: BIT; BEGIN U0: and2 GENERIC MAP(5ns,7ns) PORT MAP(d0,d1,u0); U1: and2 GENERIC MAP(5ns,7ns) PORT MAP(d2,d3,u1); U2: and2 GENERIC MAP(9ns,11ns) PORT MAP(u0,u1,q); END and2_3; 灵活改变参数满足实际设计中的要求 二、端口映射语句(二、端口映射
29、语句(PORT MAP) 将现成元件的端口信号映射成高层次设计电路中的信号。 方式方式 名字关联名字关联: 1、例化元件的端口名和关联符号“=”都必须存在; 2、位置任意 位置关联位置关联 端口名和关联符号可省去 例例 ENTITY ord IS PORT( a,b,c,d: IN STD_LOGIC; e: OUT STD_LOGIC); END ord; ARCHITECTURE artord OF ord IS COMPONENT nand2 PORT (A,B: IN STD_LOGIC; C: OUT STD_LOGIC); END COMPONENT; SIGNAL X,Y: ST
30、D_LOGIC; BEGIN U1: nand2 PORT MAP(a,b,X); U2: nand2 PORT MAP(A=c,C=Y,B=d); U3: nand2 PORT MAP(X,Y,C=e); END artord; 位置关联 名字关联 混合关联 11.2 11.2 并行语句并行语句(Concurrent Statements)(Concurrent Statements) 11.2.5 生成语句生成语句 标号:标号: FOR 循环变量循环变量 IN 取值范围取值范围 GENERATE 说明说明 BEGIN 并行语句并行语句 END GENERATE 标号标号 ; 标号:标号:
31、IF 条件条件GENERATE 说明说明 Begin 并行语句并行语句 END GENERATE 标号标号 ; 11.2.5 生成语句生成语句 表达式表达式 TO 表达式表达式 ; - 递增方式,如递增方式,如1 TO 5 表达式表达式 DOWNTO 表达式表达式 ; - 递减方式,如递减方式,如5 DOWNTO 1 【例【例11-25】 . COMPONENT comp PORT (x : IN STD_LOGIC ; y : OUT STD_LOGIC ); END COMPONENT ; SIGNAL a :STD_LOGIC_VECTOR(0 TO 7); SIGNAL b :STD_
32、LOGIC_VECTOR(0 TO 7); . gen : FOR i IN aRANGE GENERATE u1: comp PORT MA (x=a(i),y=b(i); END GENERATE gen, . 11.2 11.2 并行语句并行语句(Concurrent Statements)(Concurrent Statements) 11.2.5 生成语句生成语句 图图11-3 生成语句产生的生成语句产生的8个相同的电路模块个相同的电路模块 COMP INPUTOUTPUT COMP INPUTOUTPUT COMP INPUTOUTPUTa0b0 a1b1 a7b7 . . . 异
33、步计数器异步计数器 异步计数器又称行波计数器,它将低/高位计数器的输出 做为高/低位计数器的时钟信号.串行连接起来构成一个 异步计数器. LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFFR IS PORT ( CLK ,CLR, D : IN STD_LOGIC ; Q, QB: OUT STD_LOGIC) ; END ENTITY DFFR; ARCHITECTURE RTL OF DFFR IS SIGNAL Q_IN: STD_LOGIC; BEGIN QB=NOT Q_IN; Q=Q_IN; PROCESS (CLK, C
34、LR) BEGIN IF CLR =1 THEN Q_IN=0; ELSIF CLKEVENT AND CLK =1 THEN Q_IN=D; END IF ; END PROCESS ; END RTL ; 8个触发器构成的 个触发器构成的8位二进制异步计数器位二进制异步计数器 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY RPLCONT IS PORT ( CLK ,CLR : IN STD_LOGIC ; COUNT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END RPLCONT; ARCHITEC
35、TURE ART2 OF RPLCONT IS SIGNAL COUNT_IN_BAR: STD_LOGIC_VECTOR(8 DOWNTO 0); COMPONENT DFFR IS PORT (CLK,CLR,D :IN STD_LOGIC; Q ,QB :OUT STD_LOGIC); END COMPONENT; BEGIN COUNT_IN_BAR(0)COUNT_IN_BAR(I),CLR=CLR; D=COUNT_IN_BAR(I+1),Q=COUNT(I), QB=COUNT_IN_BAR(I+1); END GENERATE; END ARCHITECTURE ART2; 11.2 11.2 并行语句并行语句(Concurrent Statements)(Concurrent Statements) 11.2.7 断言语句断言语句 断言语句的书写格式如下:断言语句的书写格式如下: ASSERTASSERT REPORT REPORT SEVERITY SEVERITY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 1483.3-2026灯头、灯座检验量规第3部分:预聚焦式灯头、灯座的量规
- 浙江省台州市台州市白云学校2027届物理九上期末综合测试模拟试题含解析
- 2027届安徽省淮南市寿县九年级化学第一学期期末预测试题含解析
- 2027届贵港市重点中学九年级化学第一学期期中考试试题含解析
- 2027届湖北省随州市曾都区唐县九年级物理第一学期期末综合测试试题含解析
- 河北省邢台市第八中学2027届九上物理期末教学质量检测模拟试题含解析
- 天津市两学校2027届九年级物理第一学期期末复习检测模拟试题含解析
- 2026中国跨境支付外汇管理改革与区块链技术应用场景报告
- 2026中国物流信息平台商业模式及数据安全合规性分析报告
- 2026膳食纤维行业消费升级趋势与渠道变革洞察报告
- 2026年医院中央空调系统维保合同
- 2024年注册土木工程师(岩土)《专业案例(下)》试题及答案
- 2025广西崇左供电局项目资料员招聘25人(公共基础知识)综合能力测试题带答案解析
- 2025年中国银行信息科技岗笔试题及答案广西地区
- 北京中医药大学中医诊断学Z试题及答案
- 设备开箱管理办法
- 2024北森图表分析题库
- 【艾青诗选】批注
- 《轨道交通信号系统》课件
- 精神病人吞服异物的护理
- 存储器芯片项目商业计划书
评论
0/150
提交评论