VHDL抄写秒表

vhdl秒表代码

关键字

architecture

结构体描述设计实体内部的特性。结构体的书写格式如下:

architecture 结构名字 of 实体名 is:
内部信号、常量、数据类型、函数等的定义;
begin:
若干并行执行语句,具体描述结构体的功能和行为。
end 结构体名;

  • 结构体内要求使用并行执行语句
  • 类似 if 之类的顺序执行语句,只要将它们放在进程语句 process 语句之内即可。process语句是并行执行语句。

library

库用于存放预先编译好的程序包

程序包中定义了数据结构体、操作逻辑和原件等。主要是声明在设计或者实体中将用到的常数,数据类型,原件,子程序等。

signal信号

信号表示逻辑门的输入或者输出

类似于连接线,也可以表达存储元件的状态。

信号通常在结构体,程序包和实体中说明

-- 信号定义语句: signal 信号名 : 数据类型 := 初始值
signal clock : bit = '0'; -- 定义时钟信号的数据类型,初始值为0
signal count : BIT_VECTOR(3 DOWNTO 0); -- 定义 count 为四位位矢量
-- 信号赋值语句: 目标信号名 <= 表达式;
x <= 9;
Z <= x after 5 ns; -- 在 5ns 后将 x 赋值给 Z

process

​ process语句通常称之为进程语句,本质上他描述了一个功能独立的电路块;

​ process语句是一个并行执行的语句,但是process内部是顺序执行语句

[ 进程名: ] process (敏感信号1,敏感信号2,… ,敏感信号n)
[ 若干变量说明语句 ]
begin
[ 若干顺序说明语句]
end process [ 进程名 ];

  • 由于结构体中各并行执行语句都是独立的电路块,因此不允许两个或者两个以上的并行语句对对同一个信号赋值。

variable

变量只能在进程语句、函数语句和过程语句结构中使用。变量的赋值是直接的,非预制的,分配给变量的值立即成为当前值,变量不能表达“连线”或者存储元件,不能设置传输延迟量

-- 变量定义语句: variable 变量名 :数据类型 := 初始值;
variable count : integer 0 to 255 := 20;
-- 定义变量 count 整数变量,变化范围是 2~255,出初始值是 20;
-- 变量赋值语句: 变量名 := 表达式
x := 10.0;
y = 1.5 + x;
A(3 to 6) := ("1101"); -- 一个矢量的赋值

数据类型转换

​ VHDL 是强定义类型语言,不同类型的数据不能进行运算和直接赋值

-- 类型表记法
variable A : integer;
variable B : real;
-- real 实数
A = integer(B);
B = real(A);
-- 函数法
Conv_Integer(A);
-- 由 std_logic 转换为 integer 类型,在 std_logic_unsigned 包中。

常用语句

case

case 语句是顺序执行语句,常用于描述总线的行为、编译器和译码器的结构以及状态机等等。case 语句的可读性好,非常简洁4

case 条件表达式 is:
when 条件表达式值1 =>
若干顺序执行语句
when 条件表达式值2 =>
若干顺序执行语句

when 条件表达式值n =>
若干顺序执行语句
when others =>
若干顺序执行语句
end case;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值