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

VHDL中的结构体 Architecture (二)

chanra1n3年前 (2021-01-09)VHDL3588

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发布,如需转载请注明出处。

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

分享给朋友:

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

VHDL中的实体 Entity

VHDL中的实体 Entity

为了方便显示,文内所有;全部用;显示ENTITY 实体的格式为:Entity 实体名 IS     类属参数说明     端口说明 END Entity;实体名可以是除了VHDL中关键...