我正在尝试在 Verilog 中编写控制器/数据路径实现,但我对什么会导致不需要的锁存感到困惑。本质上,我有一个在 negedge 时钟上更新的状态机。该状态机根据机器所处的状态向数据路径发送 5 个控制信号(loadSquare、loadDelta、addDelta 等)。数据路径和控制器的代码如下所示。
数据路径
//Control lines
reg addSquare, addDelta, decDelta;
reg loadSquare, loadDelta;
//Input lines
reg [8:0] square, delta;
//Output register
reg [7:0] outReg;
always @(posedge clk) begin
if (loadSquare)
square = 9'h1; //used on initialization
if (loadDelta)
delta = 9'h3; //used on initialization
if (addSquare)
square = square + delta;
if (addDelta)
delta = delta + 2'h2;
if (decDelta)
outReg = (delta>>1) - 1; //used for output
else
outReg = Input;
end
Run Code Online (Sandbox Code Playgroud)
控制器
//Output …Run Code Online (Sandbox Code Playgroud)