VHDL中信号量与变量的区别
来源:互联网 发布:数据库to date 编辑:程序博客网 时间:2024/05/03 10:47
一、 变量
1.变量是对暂时数据进行局部存储的。
2.变量的说明和赋值只能在顺序部分进行,即只能在进程、过程或函数中进行。
3.变量的赋值具有立即性,不包含延时信息,更像高级语言。
4.如果需要将变量的值用于进程之外,只要将变量的值赋予相同类型的信号即可。
二、 信号
1.有一定的延时性。
2.进程只对信号敏感,不对变量敏感。
三、 具体例子。
写一个JK触发器,看看变量与信号之间的区别。JK触发器的特性方程:
Qn+1 = JQn + KQn
真值表如下:
J
K
Qn
Qn+1
功能说明
0
0
0
1
0
1
保持原态
0
1
0
1
0
0
次态从J
1
0
0
1
1
1
次态从J
1
1
0
1
1
0
与原态相反
我特意利用特征方程来写JK触发器,当然也可以用结构的行为描述来写!
错误做法,使用了信号,原码如下:
-- jkff1.vhd
library ieee;
use ieee.std_logic_1164.all;
entity jkff1 is
port( clk : in std_logic;
j : in std_logic;
k : in std_logic;
reset: in std_logic;
q,qn : out std_logic);
end jkff1;
architecture a of jkff1 is
signal state : std_logic;
signal tmp_a, tmp_b : std_logic;
begin
process(clk,reset)
begin
if(reset = '1') then
state <= '0';
elsif (clk'event and clk = '1') then
tmp_a <= j and (not state); //由于信号赋值延时,导致计算错误!
tmp_b <= (not k) and state;
state <= tmp_a or tmp_b;
end if;
q <= state;
qn <= not state;
end process;
end a;
仿真结果:可以看出有些地方输出是红色,表示不确定。
使用了变量后,源码如下:
-- jkff.vhd
library ieee;
use ieee.std_logic_1164.all;
entity jkff is
port( clk : in std_logic;
j : in std_logic;
k : in std_logic;
reset: in std_logic;
q,qn : out std_logic);
end jkff;
architecture a of jkff is
begin
process(clk,reset)
variable state : std_logic;
variable tmp_a, tmp_b : std_logic;
begin
if(reset = '1') then
state := '0';
elsif (clk'event and clk = '1') then
tmp_a := j and (not state);
tmp_b := (not k) and state;
state := tmp_a or tmp_b;
end if;
q <= state;
qn <= not state;
end process;
end a;
- VHDL中信号量与变量的区别
- VHDL中信号与变量的差异
- VHDL VHDL语言中buffer与inout的区别
- vhdl中mod与rem的区别
- 【博客大赛】VHDL中信号与变量的区别及赋值的讨论
- VHDL中信号与变量的区别及赋值的讨论
- 条件变量与互斥锁、信号量的区别
- 互斥锁 、信号量与条件变量的区别
- 信号量与条件变量的区别
- vhdl中变量(variable)和信号(signal)的区别
- VHDL中变量(variable)和信号(signal)的区别
- 信号量,互斥锁,条件变量的联系与区别
- vhdl 变量与信号区别 type符号使用
- 信号量与线程互斥锁的区别,互斥锁和条件变量的区别
- 信号量 互斥锁 条件变量的区别
- 信号量 互斥锁 条件变量的区别
- 信号量 互斥锁 条件变量的区别
- 信号量 互斥锁 条件变量的区别
- 无法启动world wide web publishing service服务错误:127 找不到指定 ...
- enum 点点啦
- 组播技术
- 晒晒我的收藏夹
- 试用visual paradigm for uml
- VHDL中信号量与变量的区别
- wap页面自动跳转的实现方式
- 对企业管理和团队的理解
- USB设备和设备描述符
- EXT 一个panel与tree结合读数据库json格式的例子
- Flex 自定义事件
- StoneMonkey开源了!
- JAVA泛型教程
- 无限级分类js解析联动