差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
脉冲发生器 [2016/06/14 13:45]
anran [代码设计]
脉冲发生器 [2021/09/13 10:56]
gongyu 移除
行 24: 行 24:
 脉冲发生一般通过对一个高频的脉冲信号进行分频来生成。 脉冲发生一般通过对一个高频的脉冲信号进行分频来生成。
  
-分频比:指方波的周期和高频信号手气之间发的比例关系,通过控制分频比来生成不同频率的方波。例如,开发系统上的时钟频率是25MHz,如果要生成5MHz的方波,则分频比为5。+分频比:指方波的周期和高频信号周期之间发的比例关系,通过控制分频比来生成不同频率的方波。例如,开发系统上的时钟频率是25MHz,如果要生成5MHz的方波,则分频比为5。
  
  
行 62: 行 62:
 </​code>​ </​code>​
  
-本设计中我们用到三个按键作为输入,需要对按键输入做消抖处理,消抖模块的原理及设计请参考[[按键消抖]]设计,这里我们以key_menu消抖为例调用按键消抖模块,如下:+本设计中我们用到三个按键作为输入,需要对按键输入做消抖处理,消抖模块的原理及设计请参考[[按键消抖]]设计,这里我们增加了按键输入信号位宽,同时对三路按键输入做消抖处理  ​,如下:
  
 <code verilog> <code verilog>
-//Debounce for key_menu +//Debounce for key 
-Debounce Debounce_menu(.clk(clk_in),​.rst_n(rst_n_in),​.key_n(key_menu),​.key_state(menu_state)); +wire [2:0] key_state,​key_pulse;​ 
 +Debounce1 Debounce_uut 
 +( 
 +.clk(clk_in),​ 
 +.rst_n(rst_n_in),​ 
 +.key_n({key_menu,​key_up,​key_down}), 
 +.key_state(key_state)
 +.key_pulse(key_pulse) 
 +);  
 + 
 +wire menu_state = key_state[0];​ 
 +wire up_pulse = key_pulse[1];​ 
 +wire down_pulse = key_pulse[2];
 </​code>​ </​code>​
  
-对三路按键做消抖后的信号可以实现周期和脉宽的控制,本设计中我们的分频比范围为2~16分级可调,0%<​脉宽<​100%分级可调,控制脉宽参数duty要始终小于周期参数cycle,实现方法如下:+对三路按键做消抖后的信号可以实现周期和脉宽的控制,本设计中我们的分频比范围为2~16分级可调,0%<​脉宽<​100%分级可调,控制脉宽参数duty要始终小于周期参数cycle, 
 +{{ ::​脉冲发生器原理.jpg |脉冲发生器原理}} 
 +实现方法如下:
  
 <code verilog> <code verilog>
行 120: 行 134:
 ^ 管脚名称 | clk_in| rst_n_in| key_menu|key_up|key_down|menu_state|pulse_out| ^ 管脚名称 | clk_in| rst_n_in| key_menu|key_up|key_down|menu_state|pulse_out|
 ^ FPGA管脚 | C1    | A2      | A12     ​|B8 ​   |A10     ​|A3 ​       |A7       | ^ FPGA管脚 | C1    | A2      | A12     ​|B8 ​   |A10     ​|A3 ​       |A7       |
-====仿真结果====+====运行结果====
  
-{{:序列检测仿真.jpg|序列检仿真}}+{{:img20160614134850.jpg?​500 |LED灯亮度}} 
 + 
 +{{:​img20160614135014.jpg?500|示波器量结果}}
 ====资源报告==== ====资源报告====
  
 ^ 资源 | 数量 ​ | 比例 ​ | 说明 ​ | ^ 资源 | 数量 ​ | 比例 ​ | 说明 ​ |
-^ LUTs | 39   | 3  ​|   |  +^ LUTs | 65   | 5   |   |  
-^ 寄存器 | 28    ​| ​2% |   |+^ 寄存器 | 42    ​| ​3% |   |
 ^ 存储器 | 0  | 0%   ​| ​   | ^ 存储器 | 0  | 0%   ​| ​   |
-^ IO管脚 ​  ​| ​|   ​| ​   |+^ IO管脚 ​  ​| ​|   ​| ​   |
 ^ 时钟频率 | 25MHz |   ​| ​   | ^ 时钟频率 | 25MHz |   ​| ​   |
  
 ====知识点==== ====知识点====
  
-  * 分频设计 +  * 按键消抖 
-  * 时序控制 +  * PWM脉宽调节 
-  * 简单状态机+  * 脉冲发生原理
  
  
 ====参考文档==== ====参考文档====
 +  * [[按键消抖]]
   * {{:​machxo2familydatasheet.pdf|Lattice MachXO2数据手册}}   * {{:​machxo2familydatasheet.pdf|Lattice MachXO2数据手册}}
 +
    
  
行 146: 行 164:
  
 ^ **文件名称** ​ | **功能** | ^ **文件名称** ​ | **功能** |
-^ **[[Serial_Detect.v]]** | **流水灯** | +^ **[[Pulse_gen.v]]** | **脉冲发生器TOP文件** | 
-^ **[[Serial_Detect_test.v]]** | **测试文件** |+^ **[[Debounce1.v]]** | **按键消抖** |