VHDL

数字逻辑VHDL

信号与变量

  • signal是全局的,在整个结构体中都有效,它的赋值是在进程结束, 也就是最后的赋值是有效的。
  • variable是局部的,它的赋值是立即生效的。
  • 一般变量是在进程的说明部分中定义的

PROCESS(a, b, c)
-- 在说明部分声明变量
VARIABLE vector: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN

-- a <= '0' HEN b = '0' ELSE '1'; 在进行中只能使用顺序类型的语句, WHEN-ELSE是并行的, 不能写在PROCESS中, 这里应该换成IF-ELSE语句
IF b = '0' THEN
a <= '0';
ELSE
a <= '1';
END PROCESS;
  • 一般信号定义在ARCHITECTURE和PROCESS之间, 在ENTITY的PORT中定义的也是信号, 可以直接在ARCHITECTURE中直接访问, 因为是全局的。

ARCHITECTURE JHArc OF JHEncoder IS
SIGNAL vector: STD_LOGIC_VECTOR(3 DOWNTO 2);
BEGIN
a <= '0' HEN b = '0' ELSE '1'; -- 并行语句
END JHArc;

进程

  • process之间是并行的,但是在内部是按照顺序执行的。

标准头

```vhdl
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
```
  • 定义ENTITY的注意点

    ENTITY comp IS
    PORT(
    A1: IN STD_LOGIC;
    B1: IN STD_LOGIC;
    A0: IN STD_LOGIC;
    B0: IN STD_LOGIC;
    altb: OUT STD_LOGIC;
    agtb: OUT STD_LOGIC;
    aeqb: OUT STD_LOGIC -- 没有分号!
    );
    END comp;

    # 并行语句和顺序语句

    • 并行语句

      • WHEN-ELSE
      • WITH-SELECT
    • 顺序语句(可以在PROCESS中使用)

      • IF-ELSE
      • IF-ELSIF
      • CASE-WHEN

转载于:https://www.cnblogs.com/megachen/p/9948860.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值