差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
book_excise_pulse_generator [2021/08/17 15:28] zili |
book_excise_pulse_generator [2021/08/17 16:50] (当前版本) zili |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ### 脉冲发生器实验 | + | ## 脉冲发生器实验 |
- | + | ||
- | #### 1. 实验内容 | + | |
- | 本实验设计一个可变频率和可变占空比的方波,要求可以通过控制按键和开关来改变方波的频率和占空比,开关控制要求表7-1如所示。 | + | |
- | 表7 1 脉冲发生器开关控制要求 | + | |
+ | ### 1. 实验内容 | ||
+ | 本实验设计一个可变频率和可变占空比的方波,要求可以通过控制按键和开关来改变方波的频率和占空比,开关控制要求表7-1如所示。\\ | ||
+ | <WRAP centeralign> | ||
+ | **表7 1 脉冲发生器开关控制要求** | ||
+ | </WRAP> | ||
|SW3 SW2 SW1|频率| | |SW3 SW2 SW1|频率| | ||
|000|2分频,50/2 MHz| | |000|2分频,50/2 MHz| | ||
行 18: | 行 19: | ||
|1|0|1:8| | |1|0|1:8| | ||
|1|1|3:8| | |1|1|3:8| | ||
+ | \\ | ||
+ | \\ | ||
+ | ### 2. 实验原理 | ||
+ | 首先介绍占空比的概念,占空比指在一串理想的脉冲序列中,正脉冲的持续时间与脉冲总周期的比值。在图72所示的波形中,占空比等于t/T。例如,脉冲宽度10μs,信号周期40μs的脉冲序列占空比为0.25。\\ | ||
+ | {{ :图7-2_占空比的定义.png |图7-2 占空比的定义}} | ||
+ | <WRAP centeralign> | ||
+ | 图7-2 占空比的定义 | ||
+ | </WRAP> | ||
- | #### 2. 实验原理 | + | 方波一般通过对一个高频的脉冲信号进行分频来生成。分频比指方波的周期和高频信号周期之间的比例关系,通过控制分频比来实现不同频率的方波。例如,开发系统上的时钟是50MHz,如果要生成10MHz的方波,则分频比为5。根据输入时钟及要输出的方波的频率计算出分频比,通过计数器的值来控制输出方波的频率。对于一定频率的方波,通过另一个计数器来控制占空比。例如,时钟是50MHz,要求生成一频率为10MHz,占空比为1/5的方波,那么分频比为5,方波的周期为5个时钟周期,正脉冲的持续时间为1个时钟周期(图7-3)。 |
- | 首先介绍占空比的概念,占空比指在一串理想的脉冲序列中,正脉冲的持续时间与脉冲总周期的比值。在图72所示的波形中,占空比等于t/T。例如,脉冲宽度10μs,信号周期40μs的脉冲序列占空比为0.25。 | + | {{ :图7-3.png |图7-3 频率为10MHz,占空比为1/5的方波}} |
+ | <WRAP centeralign> | ||
+ | 图7-3 频率为10MHz,占空比为1/5的方波 | ||
+ | </WRAP> | ||
- | 图72 占空比的定义 | + | \\ |
- | + | \\ | |
- | 方波一般通过对一个高频的脉冲信号进行分频来生成。分频比指方波的周期和高频信号周期之间的比例关系,通过控制分频比来实现不同频率的方波。例如,开发系统上的时钟是50MHz,如果要生成10MHz的方波,则分频比为5。根据输入时钟及要输出的方波的频率计算出分频比,通过计数器的值来控制输出方波的频率。对于一定频率的方波,通过另一个计数器来控制占空比。例如,时钟是50MHz,要求生成一频率为10MHz,占空比为1/5的方波,那么分频比为5,方波的周期为5个时钟周期,正脉冲的持续时间为1个时钟周期(图73)。 | + | ### 3. 程序设计 |
- | + | ||
- | 图73 频率为10MHz,占空比为1/5的方波 | + | |
- | + | ||
- | #### 3. 程序设计 | + | |
输入输出信号 | 输入输出信号 | ||
程序有4个输入信号和1个输出信号: | 程序有4个输入信号和1个输出信号: | ||
行 89: | 行 97: | ||
从上述代码可以看出,正脉冲的宽度至少为一个时钟周期。如果分频比为2,占空比为1/4,则正脉冲时钟周期为2×1/4=1/2,非整数时钟周期脉冲宽度是无法实现,所以正脉冲时钟周期数为1。 | 从上述代码可以看出,正脉冲的宽度至少为一个时钟周期。如果分频比为2,占空比为1/4,则正脉冲时钟周期为2×1/4=1/2,非整数时钟周期脉冲宽度是无法实现,所以正脉冲时钟周期数为1。 | ||
+ | \\ | ||
+ | \\ | ||
+ | ### 4. 仿真结果 | ||
+ | 用Modelsim对程序进行仿真,仿真文件为test_pulse.v。图 74为仿真结果,Squ_wave为输出方波。I=000时,占空比为1/2;dvd=00000时,分频比为2;dvd=00001时,分频比为4。\\ | ||
+ | {{ :图7-4.png |图 7-4 方波发生器仿真结果}} | ||
+ | <WRAP centeralign> | ||
+ | 图 7-4 方波发生器仿真结果 | ||
+ | </WRAP> | ||
+ | 把程序下载到开发系统上,用SignalTap逻辑分析仪观察输出的波形。I1和I2分别控制分频比和占空比,Clkout为方波输出。图75为当分频比为16、占空比为1/4是的方波输出结果。\\ | ||
+ | {{ :图7-5.png |图7-5 分频比为16,占空比为1/4时的方波输出}} | ||
+ | <WRAP centeralign> | ||
+ | 图7-5 分频比为16,占空比为1/4时的方波输出 | ||
+ | </WRAP> | ||
+ | 图7-6为当分频比为16、占空比为3/8时的方波输出结果。 | ||
+ | {{ :图7-6.png |图7-6 分频比为16,占空比为1/4时的方波输出}} | ||
+ | <WRAP centeralign> | ||
+ | 图7-6 分频比为16,占空比为1/4时的方波输出 | ||
+ | </WRAP> | ||
- | #### 4. 仿真结果 | + | \\ |
- | 用Modelsim对程序进行仿真,仿真文件为test_pulse.v。图 74为仿真结果,Squ_wave为输出方波。I=000时,占空比为1/2;dvd=00000时,分频比为2;dvd=00001时,分频比为4。 | + | \\ |
- | + | ### 5. 演示程序文件说明 | |
- | 图 74 方波发生器仿真结果 | + | |
- | 把程序下载到开发系统上,用SignalTap逻辑分析仪观察输出的波形。I1和I2分别控制分频比和占空比,Clkout为方波输出。图75为当分频比为16、占空比为1/4是的方波输出结果。 | + | |
- | + | ||
- | 图75 分频比为16,占空比为1/4时的方波输出 | + | |
- | 图76为当分频比为16、占空比为3/8时的方波输出结果。 | + | |
- | + | ||
- | 图76 分频比为16,占空比为1/4时的方波输出 | + | |
- | + | ||
- | + | ||
- | #### 5. 演示程序文件说明 | + | |
|文件名|功能| | |文件名|功能| | ||
|PulseGen.v|主程序| | |PulseGen.v|主程序| | ||
|TestPulse.v|Modelsim仿真程序| | |TestPulse.v|Modelsim仿真程序| | ||
|PulseSim.mpf|ModelSim仿真工程| | |PulseSim.mpf|ModelSim仿真工程| | ||
- | + | \\ | |
- | + | \\ | |
- | #### 6. 演示程序使用 | + | ### 6. 演示程序使用 |
- | 演示设备:核心网、扩展板。 | + | 演示设备:核心网、扩展板。 |
- | 演示方法:把程序下载到开发系统上后,由扩展板的{SW3,SW2,SW1}控制分频比,{SW7,SW6}控制占空比,通过SignalTap观测输出。核心板上的reset键为复位键。 | + | 演示方法:把程序下载到开发系统上后,由扩展板的{SW3,SW2,SW1}控制分频比,{SW7,SW6}控制占空比,通过SignalTap观测输出。核心板上的reset键为复位键。 |
- | + | \\ | |
- | #### 7. 时序波形图 | + | \\ |
- | <wavedrom> | + | |
- | { "signal" : [ | + | |
- | { "name": "clk", "wave": "p.....|..." }, | + | |
- | { "name": "Data", "wave": "x.345x|=.x", "data": ["head", "body", "tail", "data"] }, | + | |
- | { "name": "Request", "wave": "0.1..0|1.0" }, | + | |
- | {}, | + | |
- | { "name": "Acknowledge", "wave": "1.....|01." } | + | |
- | ]} | + | |
- | </wavedrom> | + | |