Fred_1977 发表于 2022-6-15 21:25

FPGA Verilog一个基础问题

<p>&nbsp;27&nbsp; &nbsp;rs232_rx0 &lt;= rs232_rx ;<br data-filtered="filtered" />
28&nbsp; &nbsp; rs232_rx1 &lt;= rs232_rx0 ;<br data-filtered="filtered" />
29&nbsp; &nbsp; rs232_rx2 &lt;= rs232_rx1 ;<br data-filtered="filtered" />
30&nbsp; &nbsp; rs232_rx3 &lt;= rs232_rx2 ;</p>

<p>没看明白这几个语句所要实现的结果是怎样的。</p>

<p>&nbsp;assign&nbsp;neg_rs232_rx = rs232_rx3 &amp; rs232_rx2 &amp; ~rs232_rx1 &amp; ~rs232_rx0</p>

littleshrimp 发表于 2022-6-16 08:10

<p>好像是分别读取rs232_rx的数据,按优先顺序存入rs232_rx2,rs232_rx1,rs232_rx0,即rs232_rx2是最早的数据,rs232_rx0是最后的数据,neg_rs232_rx 在数据为1100时为1,否则为0。</p>

bioger 发表于 2022-6-16 08:33

<p>上边四句应该是时序逻辑,每一个时钟周期赋值一次。最终assign那就其实应该是RX1下降沿之后到RX2下降沿之前的那个时钟周期,neg_rs232_rx 会有一个正脉冲信号。</p>

bigbat 发表于 2022-6-16 08:56

<p>下面四句是一个移位操作;</p>

<p>&nbsp;27&nbsp; &nbsp;rs232_rx0 &lt;= rs232_rx ;<br />
28&nbsp; &nbsp; rs232_rx1 &lt;= rs232_rx0 ;<br />
29&nbsp; &nbsp; rs232_rx2 &lt;= rs232_rx1 ;<br />
30&nbsp; &nbsp; rs232_rx3 &lt;= rs232_rx2 ;</p>

<p>这一句是计算奇偶校验的</p>

<p>&nbsp;assign&nbsp;neg_rs232_rx = rs232_rx3 &amp; rs232_rx2 &amp; ~rs232_rx1 &amp; ~rs232_rx0</p>

<p>&nbsp;</p>

Fred_1977 发表于 2022-6-16 09:06

<p>非常 感谢!</p>

Fred_1977 发表于 2022-6-16 11:46

<p>仔细学习推敲了一上午,总算搞明白了,还是数字基础知识要学好,再结合实际应用经验.</p>

bigbat 发表于 2022-6-16 15:26

<div class='shownolgin' data-isdigest='no'>bioger 发表于 2022-6-16 08:33
上边四句应该是时序逻辑,每一个时钟周期赋值一次。最终assign那就其实应该是RX1下降沿之后到RX2下降沿之前 ...

<p>兄弟,每个时钟周期只能有一个状态,对赋值对象是不对地!</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

yuan2213 发表于 2022-6-22 22:52

<div class='shownolgin' data-isdigest='no'><p>学习了</p>
</div><script>showreplylogin();</script>

xwd_bp 发表于 2023-6-29 15:52

<div class='shownolgin' data-isdigest='no'>移位缓存</div><script>showreplylogin();</script>

colorjun 发表于 2023-7-21 13:59

<div class='shownolgin' data-isdigest='no'><p>这就是UART RX找下降沿的代码</p>
</div><script>showreplylogin();</script>

孤独的单刀 发表于 2023-10-31 21:43

<div class='shownolgin' data-isdigest='no'><p>移位,打拍,然后取边沿,作为一个启动信号</p>
</div><script>showreplylogin();</script>

LilMonster00 发表于 2024-2-22 18:57

<div class='shownolgin' data-isdigest='no'> 本帖最后由 LilMonster00 于 2024-2-22 18:58 编辑

<p><span style="color:#3498db;">以下是搜索到的回答,我看了觉得没什么问题,您看一下有没有帮助</span></p>

<p>这几行 Verilog 代码实现了一种对 RS232 接收信号进行处理的逻辑。下面解释一下这些代码的作用:</p>

<ul>
        <li>
        <p><span style="color:#e74c3c;">第 27 行到第 30 行</span>:这些语句是将一个连续的信号 rs232_rx 从一个寄存器传递到另一个寄存器,创建了一个移位寄存器链。具体来说,rs232_rx 从 rs232_rx0 传递到 rs232_rx3,形成一个移位链,每个时钟周期 rs232_rx 的值都会向右移动一个寄存器位置。这种操作通常用于对信号进行时序处理或者创建移位寄存器链来实现特定的功能。</p>
        </li>
        <li>
        <p><span style="color:#e74c3c;">第 31 行:</span>这行代码是根据移位寄存器链中的值计算一个新的信号 neg_rs232_rx。具体来说,它通过对 rs232_rx3、rs232_rx2、rs232_rx1 和 rs232_rx0 进行逻辑运算,得出一个新的信号值。根据代码逻辑,neg_rs232_rx 将为逻辑值1(高电平)当且仅当 rs232_rx3 为1、rs232_rx2 为1、rs232_rx1 为0 以及 rs232_rx0 为0 时,否则为0。这种逻辑运算通常用于对信号进行条件判断或者生成特定的信号模式。</p>
        </li>
</ul>

<p>综合起来,这些代码的作用是将连续的 RS232 接收信号进行移位操作,并基于移位后的信号值计算出一个新的信号 neg_rs232_rx。</p>
</div><script>showreplylogin();</script>

LilMonster00 发表于 2024-2-22 18:59

<div class='shownolgin' data-isdigest='no'>Fred_1977 发表于 2022-6-16 11:46
仔细学习推敲了一上午,总算搞明白了,还是数字基础知识要学好,再结合实际应用经验.

<p>数电基础吗,数字基础是什么</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: FPGA Verilog一个基础问题