我正在学习SystemVerilog,今天我的讲师警告我们不要意外地将记忆引入组合系统。他使用以下代码作为例子:
for d in */; do
i=1
for f in "$d"/*.*; do
mv -- "$f" "$d${d%/}_${i}.${f##*.}"
((i++))
done
done
但是,我不明白为什么会出现问题。据我所知,这只是一个简单的缓冲区。这段代码以什么方式将内存引入系统?
答案 0 :(得分:3)
在模拟开始时,如果a == 0
y
的值为'0
。如果稍后a == 1'b1
,则y
将变为'1
。您希望y
稍后a == 0
有什么价值?
这个问题的答案是它将保留以前的值:'1
。这是不 组合逻辑的行为,其定义的输出仅取决于输入的当前状态,不在其先前的状态。为了实现您所描述的行为,合成器将需要一个 state 的组件, storage , memory 。它将通过使用 latch 实现此目的。