差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
脉冲发生器 [2016/06/14 14:34] anran [知识点] |
脉冲发生器 [2016/06/29 10:20] (当前版本) anran [代码设计] |
||
---|---|---|---|
行 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> | ||
行 128: | 行 142: | ||
^ 资源 | 数量 | 比例 | 说明 | | ^ 资源 | 数量 | 比例 | 说明 | | ||
- | ^ LUTs | 61 | 10% | | | + | ^ LUTs | 65 | 5% | | |
- | ^ 寄存器 | 80 | 5% | | | + | ^ 寄存器 | 42 | 3% | | |
^ 存储器 | 0 | 0% | | | ^ 存储器 | 0 | 0% | | | ||
^ IO管脚 | 7 | | | | ^ IO管脚 | 7 | | | | ||
行 142: | 行 156: | ||
====参考文档==== | ====参考文档==== | ||
+ | * [[按键消抖]] | ||
* {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | * {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | ||
+ | |||
行 148: | 行 164: | ||
^ **文件名称** | **功能** | | ^ **文件名称** | **功能** | | ||
- | ^ **[[Serial_Detect.v]]** | **流水灯** | | + | ^ **[[Pulse_gen.v]]** | **脉冲发生器TOP文件** | |
- | ^ **[[Serial_Detect_test.v]]** | **测试文件** | | + | ^ **[[Debounce1.v]]** | **按键消抖** | |