5VHDL顺序语句与并行语句

时间:2025-05-09

CPLD

语句结构描述中方括号“[ ]”内的内容为可选内容。

对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。

程序中的注释使用双横线“--”。

QuartusII要求源程序文件的名字与实体名、工程名必须一致。

编写程序注意不要在中文输入状态下输入英文字符和符号。

为了使程序结构清晰,使用层次缩进格式书写代码。

进程语句 顺序语句 并行语句

顺序语句仅出现在进程和子程序中。

在结构体中的执行是同时进行,执行顺序与书写顺序无关。

CPLD

在每个上升沿启动一次进程(执行进程内所有的语句)。

上升沿描述:Clock’ EVENT AND Clock=‘1’ 下降沿描述:Clock’ EVENT AND Clock=‘0’ 上升沿描述: rising_edge (Clock) 下降沿描述:

falling_edge (Clock)

1. PROCESS为一无限循环语句

2. PROCESS中的顺序语句具有明显的顺序/并行运行双重性 3. 进程语句本身是并行语句 4. 信号是多个进程间的通信线

5. 一个进程中只允许描述对应于一个时钟信号的同步时序 逻辑

CPLD

【例5-6】同一进程信号多次赋值 【例5-7】同一进程变量多次赋值

LIBRARY IEEE; LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS ENTITY mux4 IS

PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); q : OUT STD_LOGIC); END mux4; END mux4;

ARCHITECTURE body_mux4 OF mux4 IS ARCHITECTURE body_mux4 OF mux4 IS signal muxval : integer range 7 downto 0; BEGIN BEGIN

process(i0,i1,i2,i3,a,b) process(i0,i1,i2,i3,a,b) variable muxval : integer range 7 downto 0; begin begin muxval <= 0; muxval := 0; if (a = '1') then if (a = '1') then muxval <= muxval + 1; muxval := muxval + 1; end if; end if; if (b = '1') then if (b = '1') then muxval <= muxval + 2; muxval := muxval + 2; end if; end if; case muxval is case muxval is when 0 => q <= i0;

when 0 => q <= i0; when 1 => q <= i1; when 1 => q <= i1; when 2 => q <= i2; when 2 => q <= i2; when 3 => q <= i3; when 3 => q <= i3; when others => null;

when others => null; end case; end case; end process; end process; END body_mux4;

END body_mux4;

顺序语句与并行语句

电子信息工程学院

17

CPLD

(1)WAIT语句 (2)变量赋值语句 (3)信号代入语句 (4)IF语句 (5)CASE语句 (6)LOOP语句 (7)NEXT语句 (8)EXIT语句 (9)RETURN语句 (10)NULL语句

(11)过程调用语句 (12)REPORT语句

(13)断言语句

格式: ASSERT 条件 [REPORT 输出信息][SEVERITY 级别] REPRORT 输出信息 [SEVERITY 出错级别]

执行到断言语句时,判断条件,若条件满足就继续执行,否则输出文字串和错误级别信息。出错级别分为四种:note(注意)、warning(警告)、error(错误)、failure(失败)。

例: ASSERT (tiaojian=’1’) REPORT “some thing wrong” SEVERITY ERROR;

进程在执行过程中总是处于两种状态:执行或挂起,进程的状态

变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程。 WAIT语句可设置四种不同的条件:

(1)WAIT ;--未设置停止挂起的条件,表示永远挂起。

(2)WAIT ON 信号表;--敏感信号等待语句,敏感信号的变化

将结束挂起,再次启动进程。

(3)WAIT UNTIL 条件表达式;--条件表达式为中所含的信号发

生变化,且满足WAIT语句所设条件,则结束挂起,再次启动进程。

(4)WAIT FOR 时间表达式;--超时等待语句,从执行当前的

WAIT语句开始,在此时间段内,进程处于挂起状态,超过这一时间段后,程序自动恢复执行。

格式: 目的变量:=表达式 例: c:=a+d;

格式: 目的信号量<=信号量表达式 例: c<=a+b;

(1)门闩控制 (3)多选一

格式:IF 条件 THEN 格式:IF 条件 THEN 顺序执行语句 END IF; 顺序执行语句

ELSIF 条件 THEN (2)二选一

顺序执行语句 格式:IF 条件 THEN : 顺序执行语句 :

ELSE

ELSIF 条件 THEN 顺序执行语句 顺序执行语句 END IF;

ELSE

顺序执行语句 END IF;

注意:用IF语句描述组合逻辑电路时,务必涵盖所有的情况,否则综合后将引入锁存器!

CPLD

ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ;

ARCHITECTURE one OF COMP_GOOD IS BEGIN

PROCESS (a1,b1) BEGIN

IF a1 > b1 THEN q1 <= '1' ; ELSE q1 <= '0' ; END IF; END PROCESS ; END ;

ENTITY COMP_BAD IS

PORT( a1 : IN BIT; 1,编程,观察时序图和RTL图

b1 : IN BIT; 2,加入ELSE语句,观察时序图和RTL图

q1 : OUT BIT ); END ;

ARCHITECTURE one OF COMP_BAD IS BEGIN

PROCESS (a1,b1) BEGIN

IF a1 > b1 THEN q1 <= '1' ;

ELSIF a1 < b1 THEN q1 <= ‘0’ ; -- 未提及当a1=b1时,q1作何操作 END IF; END PROCESS ; END ;

CPLD

格式: CASE 表达式 IS

WHEN 条件表达式=>顺序处理语句

END CASE;

其中 …… 此处隐藏:4793字,全部文档内容请下载后查看。喜欢就下载吧 ……

5VHDL顺序语句与并行语句.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219