一个用 Verilog 实现 PWM 硬件的开发实例
Lara Simsic 著
在不远的将来,嵌入式系统设计师将能够根据哪个更有利于解决设计问题来自由选择硬件和
软件方案。但直到现在,对于那些想学习硬件设计的软件工程师来说不少障碍仍然很难逾越。
由于硬件描述语言和编程语言非常相似,因此最终这些障碍会消失。另外,市场上已有好几
种低成本的演示板,上面包含现场可编程门阵列(FPGA)、微处理器以及相应工具,软件开发
人员可以借此来学习硬件设计。
本文举例说明了一个使用 FPGA 的新设计流程,我们从中可以知道如何用软件实现 PWM,然
后如何将该设计转换成一个可以在 FPGA 中运行的逻辑块,并能利用存储器映射 I/O 接口通
过软件完成对该逻辑块的控制。
软硬件划分
现在的情况与以前有所不同,软件工程师能够方便地参与到硬件设计中。不管是硬件模块还
是软件模块现在都可以用编程语言进行设计。众所周知,C 语言是嵌入式软件设计的通用语
言。在硬件设计方面,Verilog 则是流行的选择(用 VHDL 的人也很多)。Verilog 的语法和结
构与 C 编程语言非常相似,从本文的例
子中也可以看到这一点。
同时,硬件的升级和修改也变得越来越
方便。以前可以通过下载新的可执行映像
文件升级软件,但对硬件却行不通。现在
情况不同了。就像软件开发人员能够快速编辑、重新编译、然后将新代码下载到存储器那样,
使用可编程逻辑器件的硬件设计者也能做类似的事情。可编程逻辑改变了嵌入式系统的设计
方法,设计者可以像修改软件那样方便地修改硬件。换句话说,在设计和调试阶段,设计者
能够灵活选择软件方式或硬件方式来作为完成任务的最佳方式。
设计者无需太多的硬件知识就可以利用 FPGA 供应商提供的工具轻松地开发出可编程逻辑嵌
入式系统。例如,Altera 公司的 SOPC Builder 能帮助系统设计师从已有的库中选择和配置
外围电路,并增加用来创建和连接外围电路的用户逻辑。加上一些可编程逻辑和硬件知识,
软件工程师就能够充分利用硬件的优势改进他们的系统。
PWM 软件
PWM 控制器会产生一连串脉冲。通常需要规定脉冲的周期和宽度。占空比被定义为脉冲宽度
与周期的比值。PWM 有着广泛的应用,大多数情况下用于控制模拟电路。因为数字信号连续
变化的速率相对较快(当然取决于信号周期),因此最终会形成一个用来控制模拟设备的平均
电压值。当 PWM 脉冲流应用于马达时,马达的转速就能正比于占空比(从 0%到 100%)。如果
占空比增加,马达转速就会提高,反之,如果占空比减小,马达的转速随之也会降低。
用软件编写这样一个 PWM 控制器是相对比较容易的任务,但它有助于我们简明扼要地描述如