基于FPGA的多路IO及可调PWM发生器毕业论文
2020-07-05 17:21:06
摘 要
本论文为FPGA的多路I/O及可调PWM发生器的设计,它能够通过上位机界面直观显示电路输入的电平状态、通过界面按钮输出电平以及调制脉冲宽度。本系统由上位机、主机以及从机三部分组成,上位机和主机之间通过异步串口进行通信,而主机和从机之间则是采用IIC总线进行通信。主机采用STM32单片机作为主控芯片,而从机采用FPGA作为主控芯片。并且本系统采用C#设计上位机界面,通过界面操作完成对I/O状态配置、占空比可调,实现在计算机以及机械控制领域的衔接,完成了成本低,设计灵活,操作便捷、直观,可扩展性强等特点,并且可应用于各种场合。
关键字:脉冲宽度调制 多路I/O口 IIC总线
ABSTRACT
This paper is designed for multi-channel I/O and adjustable PWM generator of FPGA. It can display the level state of the input by the upper computer interface, the output level through the interface button and the width of the modulation pulse. The system is composed of three parts: host computer, host computer and slave machine. The host computer and the host communicate through asynchronous serial port, while the host and slave are using IIC bus to communicate. The host computer uses STM32 microcontroller as the main control chip, and slave computer adopts FPGA as the main control chip. And this system uses C# to design the upper computer interface. Through the interface operation, the I/O state configuration, the duty ratio can be adjusted, the connection between the computer and the mechanical control field is realized, the cost is low, the design is flexible, the operation is convenient, visual, and the extensibility is strong, and it can be applied to various occasions.
Keywords:Pulse width modulation Multichannel I/O port IIC bus
目 录
摘要 I
ABSTRACT II
第一章 绪论 1
1.1 引言 1
1.2 本论文主要任务 1
1.3 论文结构安排 2
第二章 多路I/O口及PWM可调方案设计 3
2.1 主要功能和设计方案 3
2.2 系统设计的整体方案 4
2.3 系统设计的通信协议 5
第三章 多路I/O口及PWM从机模块 7
3.1 I/O读写模块 7
3.2 PWM脉冲宽度调制模块 13
3.3 从机系统的RTL视图 19
第四章 上位机及主机模块设计 20
4.1 上位机设计模块 20
4.2 STM32主机模块 25
第五章 系统调试 28
5.1 软件系统调试 28
5.2 硬件系统调试 29
第六章 论文总结 30
参考文献 31
附录1 单片机程序 33
附录2 从机程序 35
附录3 上位机程序 48
致谢 56
第一章 绪论
1.1 引言
PWM即脉冲宽度调制,通过对脉冲的调节能够实现对所需任意脉冲宽度的的调节,完成机械控制行业所需要的高精度的脉冲,在现实生活中有很大的实用价值和前景。并且在计算机技术日益的发展壮大过程中,计算机技术与机械控制技术互相结合,对未来工业领域有着深远的影响。
IIC总线是同步通信的一种形式,它拥有接口少、控制方式简单、通信速率比较高等优点。并且它最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。针对以上IIC的优点以及PWM可调的实用价值,本文提出了基于FPGA实现对IIC总线的多路数字I/O口的扩展,能够实时调节多路I/O口的PWM占空比可调,并且完成C#界面对各路I/O状态的监控。提供更有效的实时信号,从而完成在计算机领域以及自动控制方面有更加实用和便捷的应用。
本次的多路数字I/O的设计,能够完成未来在各个领域更加方便快捷的服务,并且能够提供对输出信号的更加高精度的保障。并且完成对数字I/O的界面实时反馈与操作的界面设计。
此次针对C#的软件的功能实现对上述I/O的界面设计,能够实时有效的对设计模块进行监控配置,以及对IIC的各路I/O信号实现实时的控制以及显示界面,并且在能够调节配置信号的PWM占空比,实现直观、快速、有效的界面设计。
1.2 本论文主要任务
本文主要完成的是一个基于FPGA的对IIC总线实现多路I/O口的PWM可调的系统模块,通过C#设计界面, 在界面上可以实时显示各个I/O口的状态并能够实时进行对I/O状态的读写进行配置。分别对软件的设计以及硬件上的功能实现过程。
本文按照课题的要求和系统功能的需求,设计主要有以下几个模块组成:IIC总线的多路I/O口扩展模块、多路PWM可调模块、C#界面实时显示、实时配置模块的设计。
按照系统功能的实现,完成基于FPGA的可编程逻辑门阵列的所有设计以及C#界面的编程设计。
1.3 论文结构安排
本次论文共由六章组成,第二章为多路I/O口及PWM可调方案设计,介绍FPGA的多路I/O及可调PWM发生器的基本设计框架、原理和特点;第三章为多路I/O口及PWM占空比可调的从机模块,主要介绍从机的设计过程;第四章是上位机和主机模块的介绍,主要是上位机和主机的设计过程;第五章为系统调试,为了能完整实现本设计的功能,未对系统的软硬件进行调试的过程;第六章为论文总结,这一模块主要总结自己在设计过程中的一些感悟和对本论文的总结。
第二章 多路I/O口及PWM可调方案设计
2.1 主要功能和设计方案
2.1.1多路I/O口及PWM可调的主要功能
随着现在互联网技术的发展,计算机领域以及机械控制行业的水平明显的上升,人们对生活水平的要求也越来越高,相应的在机械自动化控制领域的要求也是只增不减,也更加趋向于智能化的发展。所以,在机械控制行业人类已经不能满足因人力的工作效率低下而带来的种种局限。而且全新的计算机技术与机械控制行业的结合,已经在人类的生活方与工作当中起到关键的作用。所以本次设计也是以响应现在社会的发展需要,设计通过上位机界面便捷的操作完成对I/O的实时控制与状态监控,并且能够实时配置PWM占空比,做到通过界面输入操作的智能化设计。
2.1.2多路I/O口及PWM可调设计
- 基于FPGA的I/O扩展以及PWM可调的设计实现
该方案是基于FPGA从机设计,以Verily硬件语言编写原代码实现功能,采用Altera的FPGA芯片为主器件。因为FPGA的运行速度快,并且集成了很多高端的模块,使得通过计算机简易的编程就可以完成你想要实现的电路模块,实现它自己灵活的特点,并且可以为自己的设计量身定做、随时更改电路,简化了搭载电路而出现的各种不稳定以及外界的不确定因素的影响。所以本次通过FPGA的下位机实现对I/O读写、占空比可调的设计功能。
- 基于STM32单片机的主机设计实现
该方案采用STM32系列单片机为主机,其型号为STM32F103ZE,STM32 通过IIC协议与FPGA进行主从机之间的交互,通过STM32的IIC模块接通SCL、SDA以及GND三根线就可以完成通信,实现了在硬件电路的多机交互的简便,并且也避免了因为过多外设接线而导致的不稳定因素。 通过主机向从机发送指令、数据,并且接受从机回传过来的信息。
- 基于C#的上位机控制界面实现
该方案采用C#语言设计上位机的界面控制模块,C#设计模块采用的集成开发环境为Visual Studio 2010,C#是一门面向对象的编程语言,而且他的构想十分的接近于传统的语言C以及C ,但它相比较java更加的有相似之处,因为它强大的编程功能,并且简单、通用容易学习,所以本次采用了C#来设计上位机的界面,来实现上位机(电脑)与主机(STM32)以及从机(FPGA)之间的交互。
在C#设计的界面上,可以对单片机STM32通过USB转TTL串口(本次采用CH340 的USB转串口的通信电路,直接通过与USB插口连接)发送指令与数据,通过上位机与主机之间的通信,然后再由主机通过IIC总线向从机传输指令与数据完成通信。
2.2 系统设计的整体方案
2.2.1多路I/O口及PWM可调的工作原理
本设计通过C#设计的上位机界面,在界面上通过按钮以及手动输入对单片机STM32进行指令与数据的发送,作为主机的单片机在通过USB串口接收到上位机发送的指令后,通过IIC协议将信息通过SDA这条线上将信息传输至从机FPGA,从机将接收到的信息通过串并转化为并行数据存储在寄存器当中,在从机上,通过将发送至本机的信息进行解析,完成我们想要在最后的端口实现的功能,也就是我们设计的3个模块,即32个端口的状态读取、32个端口的状态写入以及8路的PWM占空比的可调模块。
2.2.2系统设计的硬件框图
本系统使用STM32系列单片机与FPGA芯片为主从机的硬件电路,通过上位机经串口发送指令进行各模块之间的运作,硬件框图如下图2.1。
- 上位机模块主要完成人机之间的交互,通过按钮发送指令、查询端口状态以及占空比的调节。
- 主机模块主要担当上位机—主机—从机之间的媒介,是信息交互的中心,实现对上位机和从机之间的信息传递。
- 从机模块,负责将上位机发送的指令进行命令解析,并且通过指令进行从机端口信息的查询以及输出端口信息的变更状态。
- 电源模块主要是起到供电作用,在这里我们用电脑的USB插口对硬件电路进行供电。
相关图片展示: