Verilog实现同步整形电路的原理及代码解析

来源:互联网 发布:tm商标域名 编辑:程序博客网 时间:2024/06/18 06:40

问题来源:

写RS-232串口的时候,涉及到按键处理逻辑模块,需要将“”在板子上按键”这一动作转化为一个脉冲信号。这一过程是通过同步整形电路实现的,精确表述如下:

将外部输入的异步信号进行同步处理(与系统时钟同步)和整形(将输入信号由不规则波形提取为具备一个或多个时钟周期长得脉冲信号)。

源代码有关片段如下:

[cpp] view plain copy
  1. reg  [2:0] bv1;  
  2. wire bv1_posedge;  
  3.   
  4. always@(posedge bclk)  
  5. begin  
  6.     bv1 <= {bv1[1:0],BUTTON_N};  
  7. end  
  8.   
  9. //完成用户按钮脉冲的提取  
  10. assign bv1_posedge = (!bv1[2]) & bv1[1];  
。解析前,先明确整形电路的方法是:同步整形的基本方法就是通过时钟对异步信号连续采样得到同步信号,然后由前后两
次的同步采样进行逻辑组合得到整形输出。所以要先进行两次采样,bv1写成:bv1 <= {bv1[1],bv1[0],BUTTON_N};第一次采样时写成bv1 <= {bv1[0],BUTTON_N,BUTTON_N'}  第二次采样可以写成bv1 <= {BUTTON_N,BUTTON_N',BUTTON_N''}.由此就得到2次采样。然后将然后将一次采样结果取反和二次采样结果相与得到输出信号。




这是根据采样方法来分析的,大家有不同意见可以多交流,相互学习。

原创粉丝点击