在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;
展开
 我来答
百度网友97f43d3f4
推荐于2016-06-03 · TA获得超过474个赞
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:0
展开全部
是的,你的这个写法毫无疑问,所有语句都是并行的。而且,个人也很赞同这种写法。

有一种情况,对同一个信号多次赋值,比如:

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看成是一个变量替换或者逻辑替换,其本身并不产生任何实际电路。
sina4321
2010-05-14 · TA获得超过1480个赞
知道小有建树答主
回答量:474
采纳率:100%
帮助的人:546万
展开全部
是并行的
在逻辑设计里最好改变软件设计的一些思维方式
你的代码看起来是要做几个计数器
在实际运行中,当col_reg = 0成立时,代码中所有的计数器都会更新
当该条件不成立时,只有前两个计数器会更新
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sweety_zly
2010-05-18 · TA获得超过166个赞
知道答主
回答量:43
采纳率:0%
帮助的人:41.9万
展开全部
if语句是顺序语句 通常只有三种结构可以使用顺序语句 即:进程语句(PROCESS) 函数(FUNCTION) 和过程(PROCEDURE)
所以 你的begin…end只能是这三种结构中的一种,在这三种结构中,所有的语句都是顺序语句,不是并行的,也就是说先执行赋值语句,再执行if语句,我对楼上的回答比较有异议 楼主自己分辨吧
但这三种结构(process function procedure)在结构体(architecture)中互相之间是并行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2010lzc11
2010-05-21
知道答主
回答量:23
采纳率:0%
帮助的人:24.6万
展开全部
不是,是顺序的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式