请考虑以下代码:
Module Test (B, A, CLK)
Input A, CLK;
Output B;
Reg RA;
Always @(Posedge CLK)
Begin
RA=A;
B=RA;
End
EndModule
是否可以正常工作将输入移动到寄存器,然后在每个上升沿移动到输出?它可以用电路创建吗?
答案 0 :(得分:0)
这取决于你要做的事情......
如果您只想要一个触发器,最简单的方法是声明react-hot-loader
然后您可以编写reg B;
。不需要另外的信号。
如果(由于某些样式原因)您想要将触发器与输出分开,您可以使用连续分配always @(posedge CLK) B <= A;
将它们连接在一起。电路是一样的。
如果您需要两个触发器(2阶段管道),您的代码几乎是正确的,但请记住声明assign B = RA;
并使用reg B;
更新(可以按任意顺序编写)。
如果<=
是用于描述您对工具的意图的某种临时变量,那么是;您可以使用RA
向其写入并在同一进程中使用其值(不要尝试从任何其他进程访问它)。这对于例如偶尔有用。在循环中积累东西,但这里只会让人感到困惑和容易出错!
要合成实际硬件,通常还会有一个复位信号,并且需要以适当的方式为每个触发器使用它。
答案 1 :(得分:0)
要回答你的问题,是的,你所写的(概念上)将起作用。在语法方面,这里有一些可以编译并做你正在思考的东西。请注意,我已将输出B
声明为寄存器,并对寄存器使用非阻塞分配。
module Test (
input wire CLK,
input wire A,
output reg B
);
reg RA;
always @(posedge CLK) begin
RA <= A;
B <= RA;
end
endmodule