一种基于fpga的串行接口和pwm组合应用ip核的制作方法

文档序号:6492618阅读:200来源:国知局
一种基于fpga的串行接口和pwm组合应用ip核的制作方法
【专利摘要】本发明涉及一种基于FPGA的串行接口和PWM组合应用IP核,包括串行接口模块、脉宽调制模块和衔接模块,所述的串行接口模块通过衔接模块与脉宽调制模块连接;串行接口模块接收输入的数据,衔接模块将输入的数据经计算转化为定时数据和占空比数据传输给脉宽调制模块,脉宽调制模块根据定时数据和占空比数据输出PWM波。与现有技术相比,本发明具有操作方便、节约FPGA资源、用户可配置性好等优点。
【专利说明】—种基于FPGA的串行接口和PWM组合应用IP核
【技术领域】
[0001]本发明涉及一种片上系统的IP核,尤其是涉及一种基于FPGA的串行接口和PWM组合应用IP核。
【背景技术】
[0002]FPGA作为一种具有丰富片上资源的可编程片上系统器件,经历了 20余年的发展,受到全世界范围内电子工程设计人员的广泛关注和普遍欢迎。它不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低。所有这些,促使FPGA越来越多地取代ASIC的市场;特别对于小批量、多品种的产品需求,FPGA已成为首选。
[0003]PWM是一种脉冲宽度调制技术,它利用微处理器的数字输出来实现对模拟电路的控制,广泛应用在从测量、通信到功率控制与变换的许多领域中。RS-232是一种串行通信标准接口,经常被用于数据通信、计算机网络以及分布式工业控制系统中交换数据和信息。通过RS-232通信来实现PWM,可以方便工作人员通过一些简单的手段来对实现模拟器件的控制,从而达到简化工作的目的。因此,将RS-232和PWM组合应用具有很强的实际意义。
[0004]目前,基于FPGA的串行接口及PWM组合应用主要是依靠在FPGA中嵌入Nios软核来完成,其设计方便,可配置能力强。但该方法会大量占用FPGA中的资源量,造成FPGA资源的浪费,并且配置较为复杂,适用于一些对PWM精度要求较高的场合,成本较高。

【发明内容】

[0005]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种操作方便、节约FPGA资源、用户可配置性好的串行接口和PWM组合应用IP核。
[0006]本发明的目的可以通过以下技术方案来实现:
[0007]一种基于FPGA的串行接口和PWM组合应用IP核,包括串行接口模块、脉宽调制模块和衔接模块,所述的串行接口模块通过衔接模块与脉宽调制模块连接;串行接口模块接收输入的数据,衔接模块将输入的数据经计算转化为定时数据和占空比数据传输给脉宽调制模块,脉宽调制模块根据定时数据和占空比数据输出PWM波。
[0008]所述的串行接口模块包括依次连接的串口接收单元、串口接收控制单元、FIFO单元、串口发送控制单元和串口发送单元;
[0009]所述的串口接收单元、串口接收控制单元和FIFO单元组成串口接收子模块,所述的串口接收控制单元通过判断FIFO单元的数据状态将串口接收单元接收到的数据传输到FIFO单元进行存储;
[0010]所述的FIFO单元、串口发送控制单元和串口发送单元组成串口发送子模块,所述的串口发送控制单元通过判断FIFO单元的数据状态选取读取的数据,再传输到串口发送单元进行发送。
[0011]所述的FIFO单元为具有先入先出特性的缓存区。[0012]所述的串口接收单元中包括电平检测子单元、波特率产生子单元和串口接收子单元,所述的串口接收子单元分别连接电平检测子单元和波特率产生子单元,串口接收子模块通过判断电平检测模块的信号,将外设发送的信号以用户定义的波特率时钟进行接收,并发送给串口接收控制模块,完成串口数据的接收;
[0013]所述的串口发送单元中包括电平检测子单元、波特率产生子单元和串口发送子单元,所述的串口发送子单元分别连接电平检测子单元和波特率产生子单元,串口发送子模块通过判断电平检测模块的信号,将从串口发送控制模块获得的发送数据以用户定义的波特率发送出去,完成串口的数据发送。
[0014]所述的脉宽调制模块包括定时器、加法器、计算值寄存器、占空比寄存器、第一比较器和第二比较器,所述的定时器依次连接加法器、计算值寄存器和第二比较器,所述的第一比较器分别连接计算值寄存器和占空比寄存器;
[0015]当定时器计数满后,溢出信号将会使得加法器进行自加运算,第一比较器比较计数值寄存器和占空比寄存器的值,如小于则输出高电平,反之输出低电平,同时第二比较器判断计数值寄存器的值是否等于255,如果等于255,则将计数值寄存器的值清零,重新计数,即一个周期结束。
[0016]所述的定时器为可配置预置值的16位定时器。
[0017]所述的PWM波的周期由定时器的数值time_reg决定,公式如下:
[0018]T ( μ s) = time_reg*0.02*256
[0019]所述的PWM波的占空比由占空比寄存器的数值duty_reg决定,公式如下:
[0020]Duty (% ) = (duty_reg/256) *100%。
[0021]所述的衔接模块包括相连接的周期寄存器计算单元和占空比寄存器计算单元。
[0022]与现有技术相比,本发明具有以下优点:
[0023](I)本发明采用IP硬核方式来完成串行接口及PWM组合应用,配置简单,操作方便,可以满足一些对配置精度要求不高的工业应用;
[0024](2)与使用Nios软核进行的设计相比,本发明在满足用户通过串口进行PWM调制需求的同时,大大减少了设计所需的资源;
[0025](3)本发明具有较好的用户可配置性,从而可以最大程度地利用FPGA上的资源。【专利附图】

【附图说明】
[0026]图1为本发明的结构示意图;
[0027]图2为本发明中串口接收子模块的结构示意图;
[0028]图3为本发明中串口发送子模块的结构示意图;
[0029]图4为本发明脉宽调制模块的结构示意图;
[0030]图5为本发明衔接模块的结构示意图。
【具体实施方式】
[0031]下面结合附图和具体实施例对本发明进行详细说明。
[0032]实施例
[0033]如图1所示,一种基于FPGA的串行接口和PWM组合应用IP核(IntellectualProperty),包括串行接口模块1、衔接模块2、脉宽调制(PWM)模块3。秉承自顶向下的设计方式,将复杂的功能分为简单的功能模块,最后通过IP核封装,从而实现IP核的开发。
[0034]I)串行接口模块
[0035]本模块在quartusll开发环境下设计完成。如图2_图3所示,串行接口模块I包括依次连接的串口接收单元11、串口接收控制单元12、FIF0单元13、串口发送控制单元14和串口发送单元15 ;如图2所示,串口接收单元11、串口接收控制单元12和FIFO单元13组成串口接收子模块,所述的串口接收控制单元12通过判断FIFO单元13的数据状态将串口接收单元11接收到的数据传输到FIFO单元13进行存储;如图3所示,FIFO单元13、串口发送控制单元14和串口发送单元15组成串口发送子模块,所述的串口发送控制单元14通过判断FIFO单元13的数据状态选取读取的数据,再传输到串口发送单元15进行发送。
[0036]1.1 FIFO 单元
[0037]FIFO单元是一个缓存区,具有先入先出的特性,为了使得模块具有独立性,故加入FIFO缓存区单元。此单元作为串口的数据缓冲,FIFO单元共引出20条线路。其输入端连接有I位写入信号线(Write_Req_Sig)、8位数据写入总线(FIF0_Write_Data)和I位缓存区满反馈信号线(Full_Sig),输出端连接I位读取信号线(Read_Req_Sig)、8位数据读取总线(FIF0_Read_Data)和I位缓存区空反馈信号线(Empty_Sig),所述的I位写入信号线、8位数据写入总线和I位缓存区满反馈信号线均与串口接收控制单元连接14,所述的I位读取信号线、8位数据读取总线和I位缓存区空反馈信号线均与串口发送控制模块连接12。
[0038]1.2串口发送和接收控制模块
[0039]此模块主要用来控制串口的发送和接收。在发送部分中,串口发送控制模块通过判断FIFO的数据状态,来选择读取的数据,再传输到串口发送模块进行发送。在接收部分中,串口接收控制模块通过判断FIFO的数据状态将接收到的数据传输到FIFO中存储。串口控制模块上引出的线路包括数据总线输入(Rx_Data、FIF0_Read_Data),数据总线输出(Tx_Data、FIF0_ffrite_Data),缓存区反馈信号线(Full_Sig、Empty_Sig),读写信号线(Write_Req_Sig、Read_Req_Sig),读写使能信号线(Rx_En_Sig、Tx_En_Sig),读写完成信号线(Tx_Done_Sig、Rx_Done_Sig) ο
[0040]1.3串口发送和接收单元
[0041]串口发送单元和串口接收单元都由3个子模块组成,其中电平检测模块主要负责检测是否开始串口传输,并将检测结果以电平模式发送给串口发送和接收子模块。波特率产生模块可以根据用户自己定义的波特率通过定时器来产生串口传输必须的波特率时钟,并传输到串口发送和接收子模块。在串口发送中,串口发送子模块通过判断电平检测模块的信号,将从串口发送控制模块获得的发送数据(TX_pin_out)以用户定义的波特率发送出去,完成串口的数据发送。在串口接收中,串口接收子模块通过判断电平检测模块的信号,将外设发送的信号(Rx_pin_in)以用户定义的波特率时钟进行接收,并发送给串口接收控制模块,完成串口数据的接收。
[0042]串口发送接收模块共引出11条线路,其中包括:8位数据总线;I位读写信号线;1位读写使能信号线;1位读写完成信号线。
[0043]2)脉宽调制(PWM)模块[0044]如图4所示,PWM模块是一个用户可自定义周期及占空比的脉冲宽度调制模块,包括定时器31、加法器32、计算值寄存器33、占空比寄存器34、第一比较器35和第二比较器36,所述的定时器31依次连接加法器32、计算值寄存器33和第二比较器36,所述的第一比较器35分别连接计算值寄存器33和占空比寄存器34。PWM模块的核心是一个定时器。为了产生周期可变、占空比可变的输出信号,需要一个可配置预值的16位定时器,当定时器计数满后,溢出信号将会使得加法器进行自加运算,并且比较计数值寄存器(Count_reg)和占空比寄存器的值(Duty_reg)如小于则输出高电平,反之输出低电平。同时比较计数值寄存器的值是否等于255,如果等于255,则将计数值寄存器的值清零,重新计数,即一个周期结束。如此,可获得一个周期和占空比均可用户配置的PWM脉冲调制模块。
[0045]PWM模块输出的PWM波形周期由一个可配置预置数的16位定时器寄存器的数值(time_reg)决定,公式如下:
[0046]T(us) = time_reg*0.02*256(I)
[0047]由于系统主频为50MHZ,定时器计数值为从O~65535,故每计数一次的系统时间为0.02us,所以,此PWM模块的周期可在:5.12us~335ms之间由用户配置,即频率可调范围;3hz ~19khz。
[0048]PWM模块输出的PWM波形占空比由一个可配置预置数的8位占空比寄存器(duty_reg)的数值决定,公式如下:
[0049]Duty (% ) = (duty_reg/256) *100%(2)
[0050]3)衔接模块
[0051]本部分为控制部分,其目的是将串口输入的数据进行周期和占空比数据的分离,并且通过内部的计算单元为PWM模块计算出用户所配置的周期和占空比所对应的周期计数值及占空比寄存器的值,如图5所示`,此部分包括相连接的周期寄存器计算单元21和占空比寄存器计算单元22。
[0052]3.1周期寄存器计算单元(周期控制)
[0053]根据从串行接口模块I给出的周期的值,在内部的比较器及运算模块的作用下,周期寄存器计算单元计算出单个计数周期的计数值,其计算公式如下:
[0054]time_reg = T (us) *50/256(3)
[0055]其中周期的单位为微秒,周期寄存器计算单元将计算出的单位计数周期计数值发送给PWM模块,从而完成周期的控制。
[0056]3.2占空比寄存器计算单兀(占空比控制)
[0057]根据从串行接口模块I给出的占空比的值,在内部的比较器及运算模块的作用下,占空比寄存器计算单元计算出高电平所占总周期的比例,其计算方法如下:
[0058]duty_reg = Duty(% ) *256/100%(4)
[0059]占空比寄存器计算单元将计算出占空比寄存器的值发送给PWM模块,从而完成占空比的控制。
[0060]4) IP核的封装
[0061]IP核是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。
[0062]本发明中,根据硬件功能模块图,依据模块化设计思想,选用自顶向下的设计理念,基于硬件描述语言实现硬件。IP核由3部分组成:行为模块实现本元件的基本功能;寄存器文件模块实现本元件和外部信号的通信;Avalon总线接口模块作为顶层模块,定义总线接口信号。完成后先对行为模块单独进行行为级和RTL级时序仿真测试,然后对所有模块进行时序仿真,得到总线时序参数。最后利用quartus 11中的SOPC Builder中的元器件编辑器封装最原始的硬件文件,从而完成IP核的开发。
【权利要求】
1.一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,包括串行接口模块、脉宽调制模块和衔接模块,所述的串行接口模块通过衔接模块与脉宽调制模块连接;串行接口模块接收输入的数据,衔接模块将输入的数据经计算转化为定时数据和占空比数据传输给脉宽调制模块,脉宽调制模块根据定时数据和占空比数据输出PWM波。
2.根据权利要求1所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的串行接口模块包括依次连接的串口接收单元、串口接收控制单元、FIFO单元、串口发送控制单元和串口发送单元; 所述的串口接收单元、串口接收控制单元和FIFO单元组成串口接收子模块,所述的串口接收控制单元通过判断FIFO单元的数据状态将串口接收单元接收到的数据传输到FIFO单元进行存储; 所述的FIFO单元、串口发送控制单元和串口发送单元组成串口发送子模块,所述的串口发送控制单元通过判断FIFO单元的数据状态选取读取的数据,再传输到串口发送单元进行发送。
3.根据权利要求2所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的FIFO单元为具有先入先出特性的缓存区。
4.根据权利要求2所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的串口接收单元中包括电平检测子单元、波特率产生子单元和串口接收子单元,所述的串口接收子单元分别连接电平检测子单元和波特率产生子单元,串口接收子模块通过判断电平检测模块的信号,将外设发送的信号以用户定义的波特率时钟进行接收,并发送给串口接收控制模块,完成串口数据的接收; 所述的串口发送单元中包括电平检测子单元、波特率产生子单元和串口发送子单元,所述的串口发送子单元分别连接电平检测子单元和波特率产生子单元,串口发送子模块通过判断电平检测模块的信号,将从串口发送控制模块获得的发送数据以用户定义的波特率发送出去,完成串口的数`据发送。
5.根据权利要求1所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的脉宽调制模块包括定时器、加法器、计算值寄存器、占空比寄存器、第一比较器和第二比较器,所述的定时器依次连接加法器、计算值寄存器和第二比较器,所述的第一比较器分别连接计算值寄存器和占空比寄存器; 当定时器计数满后,溢出信号将会使得加法器进行自加运算,第一比较器比较计数值寄存器和占空比寄存器的值,如小于则输出高电平,反之输出低电平,同时第二比较器判断计数值寄存器的值是否等于255,如果等于255,则将计数值寄存器的值清零,重新计数,即一个周期结束。
6.根据权利要求5所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的定时器为可配置预置值的16位定时器。
7.根据权利要求5所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的PWM波的周期由定时器的数值time_reg决定,公式如下:
T(μ s) = time_reg*0.02*256 所述的PWM波的占空比由占空比寄存器的数值duty_reg决定,公式如下:
Duty (% ) = (duty_reg/256) *100% ?
8.根据权利要求1所述的一种基于FPGA的串行接口和PWM组合应用IP核,其特征在于,所述的衔接模块包括相连接的周期寄`存器计算单元和占空比寄存器计算单元。
【文档编号】G06F9/50GK103870421SQ201210529630
【公开日】2014年6月18日 申请日期:2012年12月10日 优先权日:2012年12月10日
【发明者】苏圣超, 楼星融 申请人:上海工程技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1