当前位置:首页 > FPGA > VHDL > 正文内容

VHDL中的结构体 Architecture (二)

chanra1n4年前 (2021-01-09)VHDL4290

image.png

此点必须额外注意,当你初始化值时,可以用:=,但是给信号赋值就是<=

信号和变量的区别主要是信号的值为进程或者子程序最后的赋值结果,变量的赋值是立即生效的。

例如:

architecture behaviorl of count is
	signal a,b,c,d: std_logic_vector(3 downto 0);
begin
	process(a,b,c,d)
	begin
	    d<=a;
	    x<=b+d;
	    d<=c;
	    y<=b+d;
	end process;
end behaviorl;

运行后的结果为:x=b+c;

                        y=b+c;

而倘若D为变量类型:

architecture behaviorl of count is
	signal a,b,c: std_logic_vector(3 downto 0);
begin
	process(a,b,c)
	variable d:std_logic_vector(3 downto 0);
	begin
	    d<=a;
	    x<=b+d;
	    d<=c;
	    y<=b+d;
	end process;
end behaviorl;

运行后的结果为:x=b+a;

                        y=b+c;

观察可以发现,当abcd均为信号类型时,x和y的值,也就是b+d是取的b和d最后一次被赋值的结果,即b+d

而当d为变量类型后,x<=b+d的结果就是立即赋值的x<=b+a,倘若在后面b也发送了变化,则b也需要变为对应的值,但是此处d就是a不变的


architecture中第二个部分就是处理部分,可以是进程 block 信号赋值 子程序调用 元件例化,上面说过,architecture中的语句和模块是并行进行的,但是process和subprogram内部是顺序的

例如:

architecture abc of bcd is
signal time1:std_logic_bit;
begin
    process(time1)
    time1<='1' after 10ns;
    time1<='0' after 20ns;
    end process;
end abc;

在10ns之后,time1被赋值为1,再等待20ns之后,time1被赋值为0.


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:http://myfpga.cn/index.php/post/176.html

分享给朋友:

“VHDL中的结构体 Architecture (二)” 的相关文章

VHDL中常用的基本数据类型

VHDL中常用的基本数据类型

bit 比特,即位,数据可以取值为'0'和'1'bit-vector 位矢量,或者位向量,数据可以为多个bit位,例如"1111001"boolean 布朗类型,可以是真或者假,即"true"或者"false"...

VHDL中的标识符 Identifiers

VHDL中的标识符 Identifiers

标识符由不超过32个的字母、数字和下划线组成标识符的首字母必须是字母,并且不区分大小写标识符的最后一位不可以是下划线,且不允许有连续的下划线标识符不可以是保留字保留字示例:AND OR XOR ABS IN IF FOR此类合法的标识符:Hello_fpga h_a_p_p_y a1b2c3 此类非...