在vhdl语句中begin...end之间的赋值语句和if语句是并行的吗?
如下,在vhdl语句中begin...end之间的赋值语句和if语句是并行的吗?例:begincol_reg<=col_reg+1;col_2_reg<=col_2_re...
如下,在vhdl语句中begin...end之间的赋值语句和if语句是并行的吗?
例:begin
col_reg <= col_reg + 1;
col_2_reg <= col_2_reg + 1;
-- finished processing one input row
if col_reg = 0 then
row_reg <= row_reg + 1;
end if;
end; 展开
例:begin
col_reg <= col_reg + 1;
col_2_reg <= col_2_reg + 1;
-- finished processing one input row
if col_reg = 0 then
row_reg <= row_reg + 1;
end if;
end; 展开
4个回答
展开全部
是的,你的这个写法毫无疑问,所有语句都是并行的。而且,个人也很赞同这种写法。
有一种情况,对同一个信号多次赋值,比如:
a <= x"00";
if cond1 = true then
a<= x"01";
elsif cond2 = true then
a<= x"02";
end if;
看起来不太并行,其实相当于:
if cond1 = true then
a<= x"01";
elsif cond2 = true then
a<= x"02";
else
a <= x"00";
end if;
但是,个人非常不赞同第一种写法(纯软件工程师的写法),因为有些编译综合工具遇到这个情况会出错。
如果遇到你非要顺序执行的情况,请用variable,例如:
v := x"00";
if cond1 = true then
v := x"01";
elsif cond2 = true then
v := x"02";
end if;
a <= v;
可以把variable看成是一个变量替换或者逻辑替换,其本身并不产生任何实际电路。
有一种情况,对同一个信号多次赋值,比如:
a <= x"00";
if cond1 = true then
a<= x"01";
elsif cond2 = true then
a<= x"02";
end if;
看起来不太并行,其实相当于:
if cond1 = true then
a<= x"01";
elsif cond2 = true then
a<= x"02";
else
a <= x"00";
end if;
但是,个人非常不赞同第一种写法(纯软件工程师的写法),因为有些编译综合工具遇到这个情况会出错。
如果遇到你非要顺序执行的情况,请用variable,例如:
v := x"00";
if cond1 = true then
v := x"01";
elsif cond2 = true then
v := x"02";
end if;
a <= v;
可以把variable看成是一个变量替换或者逻辑替换,其本身并不产生任何实际电路。
展开全部
是并行的
在逻辑设计里最好改变软件设计的一些思维方式
你的代码看起来是要做几个计数器
在实际运行中,当col_reg = 0成立时,代码中所有的计数器都会更新
当该条件不成立时,只有前两个计数器会更新
在逻辑设计里最好改变软件设计的一些思维方式
你的代码看起来是要做几个计数器
在实际运行中,当col_reg = 0成立时,代码中所有的计数器都会更新
当该条件不成立时,只有前两个计数器会更新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if语句是顺序语句 通常只有三种结构可以使用顺序语句 即:进程语句(PROCESS) 函数(FUNCTION) 和过程(PROCEDURE)
所以 你的begin…end只能是这三种结构中的一种,在这三种结构中,所有的语句都是顺序语句,不是并行的,也就是说先执行赋值语句,再执行if语句,我对楼上的回答比较有异议 楼主自己分辨吧
但这三种结构(process function procedure)在结构体(architecture)中互相之间是并行的
所以 你的begin…end只能是这三种结构中的一种,在这三种结构中,所有的语句都是顺序语句,不是并行的,也就是说先执行赋值语句,再执行if语句,我对楼上的回答比较有异议 楼主自己分辨吧
但这三种结构(process function procedure)在结构体(architecture)中互相之间是并行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询