【发布时间】:2018-02-20 13:42:16
【问题描述】:
我正在为要在 FPGA 上实现的 UART 编写 Verilog 代码,但在第一个字节之后同步到字节的 START 位时遇到了一些问题。
我的经理建议同步我收到的信号并使用某种中断作为与我的 FSM 通信的一种方式,即已识别出开始。
我已经阅读了有关上升沿检测的技术,我觉得我可以这样做:
module StartDetectionUnit (
input clk, state, signal_in,
output trigger
);
reg signal_d;
always @(posedge clk)
begin
signal_d <= signal_in;
end
assign trigger = signal_in & (!signal_d);
endmodule
在我的理解中,这样的描述检测的是上升沿,而不是下降沿,但“START”是 RS-232 通信中的逻辑“0”。
另外,我想在 IDLE 状态 [硬编码为 000] 时实际分配标志,但对最终分配进行疯狂的门控对我来说听起来不是硬件。
tldr,两个问题
- 检测异步输入信号的一般下降沿
- 在 FSM 的单个特定状态下这样做
非常感谢,我是 Verilog 的新手,对 HDL'ing 还是有点陌生
【问题讨论】:
标签: synchronization verilog clock hdl