基于FPGA的可编程PWM电路设计

[09-08 10:25:45]   来源:http://www.88dzw.com  电源电路   阅读:8812

文章摘要:3.3 PWM编程PWM芯片的引脚排列如图4所示,当其在上电加载时钟后,所有通道都禁止输出。系统通过采样DataWidth来确定外围数据接口的宽度,如果采用16bits传输(DataWidth=1),则Data[15:0]都使用;如果采用8bits传输(DataWidth=0),则仅使用Data[7:0],而将高8bits接地。复位(Reset_b)结束后,在片选(Cs_b)有效的情况下,可以对芯片进行读写操作。对通道的一次完整的读写包括写控制字与读写通道寄存器两个过程,写控制字选中通道内寄存器,读写通道寄存器则可获取通道寄存器信息,只有当合理的数据写入后,且在PWMH-_b有效(PWMH_b

基于FPGA的可编程PWM电路设计,标签:电源电路,电路设计,http://www.88dzw.com

3.3 PWM编程

PWM芯片的引脚排列如图4所示,当其在上电加载时钟后,所有通道都禁止输出。系统通过采样DataWidth来确定外围数据接口的宽度,如果采用16bits传输(DataWidth=1),则Data[15:0]都使用;如果采用8bits传输(DataWidth=0),则仅使用Data[7:0],而将高8bits接地。

复位(Reset_b)结束后,在片选(Cs_b)有效的情况下,可以对芯片进行读写操作。对通道的一次完整的读写包括写控制字与读写通道寄存器两个过程,写控制字选中通道内寄存器,读写通道寄存器则可获取通道寄存器信息,只有当合理的数据写入后,且在PWMH-_b有效(PWMH_b=1)时,PWM内部通道才使能输出信号。一般情况下,各通道的输出使能由各通道的控制字寄存器的PWM_EN位决定。

采用控制字自动备份的方式可使控制字的编程更加灵活。它既可以使同一个类型的寄存器(不同通道)一起写控制字,亦可对同一个通道一块操作。但是所有控制字命令都可以在PWM的控制字命令列表中查询。

4 PWM的仿真及验证

PWM的仿真是PWM功能验证的必要环节。可以Modelsim结合脚本文件进行仿真,并采用89C51结合FPGA验证板对整个设计进行验证。

www.88dzw.com

4.1 PWM的仿真

ModeslSim仿真主要观察PWM电路的双向IO端口以及PWM的Regs读写控制时序。对于双向端口的数据交换,可以采用读写控制结合三态门来完好地解决。而对于大量的Regs读写操作,则应通过模拟单片机对外围器件进行操作,并利用Task调用的方式来实现。本文的读写操作仿真结果如图5所示。

从图5可以看到,当采用16 bits读写时,各寄存器通过内部DataInternal数据总线的传输过程与电路设计要求完全一致。RWLogic与DataInterface模块的功能完全符合设计预想。

从图6所示的PWM波形仿真结果可见,PWM输出信号在ClkGen的CycleScale信号控制下,其周期输出编程设定的PWM波形与之完全一致,同时还能异步响应ChannelHold_b信号的输出控制。


4.2 PWM的验证

PWM的FPGA验证可采用8 bits数据接口,并用89C51做外围控制器(12 MHz)来对PWM进行操作。为了方便与单片机的接口,可将74LS373锁存器内置到PWM中,其整个数字部分设计如图7所示。

5 结束语

通过Synplify Pro编译后,其最后的结果为:

该方案的整个电路设计占用FPGA资源的35%。对于51系列的单片机而言,该PWM电路可运行的频率远远超过系统频率。因此,在读写时序上完全可以保证整个设计的可靠性。

如果将编译后的pof文件下载到APEX20KEEP20K100E TQ144-2X(Altera)fpga验证板,并采用40 MHz的FPGA时钟,那么,根据软件仿真的步骤,再将读写操作转换为单片机程序烧录到单片机,就可通过示波器清楚的看到,其实际输出与设计完全一致,非常好地实现了当初的设计要求。

www.88dzw.com

2.1 模块片选译码

该模块主要通过地址信号Addr与片选信号Cs_b的组合逻辑电路生成内部各子模块的片选信号(ControlLogic,3个通道:Channel2,Channel1,Channel0)。

2.2 控制逻辑

上一页  [1] [2] [3]  下一页


Tag:电源电路电源电路,电路设计家电维修 - 单元电路介绍 - 电源电路