这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore3l_fpga_10 [2020/11/23 09:12] zgf [三、 实验原理] |
icore3l_fpga_10 [2022/03/19 15:27] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-11-23 | zgf | 初次建立 | | | V1.0 | 2020-11-23 | zgf | 初次建立 | | ||
行 30: | 行 29: | ||
* 通过上面两个图示的理解,那么实现PWM信号的输出,可以采用对系统时钟周期进行计数的方式实现。iCore3L的系统时钟是25MHz,以系统时钟周期上升沿作为触发条件,进行累加计数。如果要得到一个频率为500KHz的信号,那么其周期是系统时钟周期的 | * 通过上面两个图示的理解,那么实现PWM信号的输出,可以采用对系统时钟周期进行计数的方式实现。iCore3L的系统时钟是25MHz,以系统时钟周期上升沿作为触发条件,进行累加计数。如果要得到一个频率为500KHz的信号,那么其周期是系统时钟周期的 | ||
- | 25000000Hz/500 000Hz =50(倍) | + | * **25000000Hz/500 000Hz =50(倍)** |
* 即计数器从0计到49所用的时间,是500KHz信号的一个周期。如果使500KHz信号在计数器从0计数到29的时候是高电平,30计数到49的时候是低电平,那么,就可以得到1个占空比为60%的500KHz PWM信号。 | * 即计数器从0计到49所用的时间,是500KHz信号的一个周期。如果使500KHz信号在计数器从0计数到29的时候是高电平,30计数到49的时候是低电平,那么,就可以得到1个占空比为60%的500KHz PWM信号。 | ||
==== 四、 代码讲解 ==== | ==== 四、 代码讲解 ==== | ||
* 本实验中参考时钟为clk_fpga(25MHz),频率控制参数为cycle,占空比参数为puty_50和puty_20。频率为500KHz的波形计算公式为: | * 本实验中参考时钟为clk_fpga(25MHz),频率控制参数为cycle,占空比参数为puty_50和puty_20。频率为500KHz的波形计算公式为: | ||
- | 25MHz/(cycle-1)=500K Hz; | + | * **25MHz/(cycle-1)=500K Hz;** |
- | | + | |
* 占空比为20%的周期参数计算公式为: | * 占空比为20%的周期参数计算公式为: | ||
- | puty_20/cycle; | + | * **puty_20/cycle;** |
- | | + | |
* 占空比为50%的周期参数计算公式为: | * 占空比为50%的周期参数计算公式为: | ||
- | puty_50/cycle。 | + | * ** puty_50/cycle。** |
- | | + | |
* 则输出信号的Verilog代码实现如下: | * 则输出信号的Verilog代码实现如下: | ||
<code verilog> | <code verilog> |