论文部分内容阅读
摘要:该文对比利用MSP430单片机实验完成的串口通信和利用FPGA完成的串口通信实验原理、过程、方法及实验结果,能够让学生不但能深刻理解硬件底层逻辑,还能让学生对比实验中学习串行语言和并行语言的优缺点,让学生真正做到知其然也知所以然。能有效提升学生的学习知识运用知识的实践能力。
关键词:实验教学;FPGA;单片机;UART
学习通信工程的过程中离不开大量的实验和动手练习,就如同开车一样,学习理论数载,如果从来没有打几把方向盘,踩几脚油门然后再被教练紧急刹车几次,仍然不会开车。正所谓,看别人做一百次,不如自己练一次。单片机和FPGA为学生学习实践提供了大显身手的平台。学习单片机如同开车,学习FPGA则如同造车,更能让学生理解硬件的底层原理。
1 单片机实现串口通信
以MSP430单片机为例来阐述单片机实现串口通信的过程。MSP430单片机的USART模块可以配置成SPI或UART模式。在UART模式下,其功能结构如图1所示。在单片机串口实验中,对串口的操作实质上是对其寄存器的操作。具体做法是:在UxCTL寄存器中对串口模式设置相关的控制位进行设置;在UxCTL寄存器中对接收相关的控制位进行设置;在UxBR0、UxBR1、UxMCT寄存器中设置波特率控制位;在IE1/2寄存器设置中断允许控制位;在IFG1/2寄存器中设置中断标志位。
MSP430单片机实现串口通信需要按照以下思路来设置和配置各个寄存器:第一,要选择合适的时钟源。MSP430单片机具有多时钟源,可以根据设计的任务和功耗模式来选择不同的时钟源。第二,设置合适的波特率。MSP430单片机的串口特色之一就是小数分频器,一般单片机的数字逻辑无法实现小数分频。分频系数计算公式如式(1):
其中f_BRCLK是波特率发生器的时钟源频率,Baud是所需的波特率,[]表示取整操作。计算结果的高8位用于设UxBR1置寄存器,低8位用于设置UxBR0寄存器。第三,配置收发寄存器。由于MSP430单片机具有独立的串口接收与发送中断,这可以使用前后台的程序架构,在发送与接收中断中读写收发缓冲区,让CPU从等待收发完成中解放出来,从而编写出不阻塞CPU运行的串口收发程序。
把编译后的工程代码下载到MSP430单片机中运行,在PC端利用从“串口调试助手”上发送AA两位数的字符,这些字符经过FPGA串口接收,然后传回到串口助手显示区域显示出来,串口调试助手可以。
2 FPGA实现串口通信
在数字电路中,门电路是最基本的构成单位,可以说任何复杂的数字电路系统都可以通过我们耳熟能详的与门、非门、或门、与非门、异或门等等组合实现。FPGA 是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。其实,FPGA的运算处理方式就类似于我们的大脑。它拥有一个可以储存大量数据的查找表,只要我们通过程序定义出输入与输出之间的逻辑关系,FPGA就可以按照该逻辑关系自行对其内部结构进行重新定义,直白地说,我们采用简单通俗的Verilog语言可以随时给FPGA进行清洗,而后者可以永远不计回报,心甘情愿地被清洗。它就像一个纳米级面包板,你可以把它们连接(wire up)起来做出任何你想要的电路。
UART的数据传输格式:
UART以字符所构成的帧为单位来进行传输帧,而帧的字符位包括:起始位、数据位、奇偶检验位和停止位,其帧结构如图2所示。
串口接收时序图如图3所示,从图中可以看出高电平是串口通信的空闲默认状态,当一帧数据开始传输时必须先拉低电平让接收端识别到发送端有数据要发送,完成串口的握手协议,这是第0位的作用。0位后面是8个是数据位,也是数据传输中最有意义的数据位,最后两位是校验位和停止位。在串口接收时根据波特率的不同按图3串口接收时序所示对各位进行定时数据采集。在第0位数据忽略,后面的8位数据被采集,最后两位是校验位和停止位采用忽略操作。在串口发送时根据波特率的不同对各位进行定时数据发送。
从串口接收时序图3中可以看出串口接收是一个“采样”的过程;该过程主要由电平检测模块(detect_module.v )、波特率产生模块( bps_module.v)和数据接收控制模块(rx_control_module.v)三部分模块来实现。串口接收系统运用Verilog HDL硬件描述语言在QuartusⅡ11.0软件上编译设计,该系统RTL仿真如图4所示。
工程编译后下载到开发板中,在PC端利用串口调试助手在发送区发送 0A ,用串口接收到数据控制开发板上的LED,可以看到开发板上只有第二位和第四位的LED灯亮,如图5所示,说明接收数据为0A完全正确。
3 实验对比分析
本文对比利用MSP430单片机实验完成的串口通信和利用FPGA完成的串口通信实验原理、过程、方法及实验结果,可以发现:在传统的单片机串口实验中,对串口的操作本质上是对串口相关的寄存器进行设置。实际上串口在传输过程中底层数据到底是如何传输的,这些底层深层的东西在传统的单片机串口实验中是不清楚的。就像开车一样,只要挂上挡,踩上油门车就开走了,至于为什么能开走就不知道了。学生也只能对串口通信知其然不知所以然。反之使用FPGA对串口建模,就如同制造了一个汽车,重新构造了一个串口,就会让学生从底层窥探到串口通信原理,增强和加深学生对串口通信的理解与应用。单片机采用串行C語言进行编程,FPGA则用并行语言Verilog控制。C 语言所消耗的时钟数是不可见的,然而 Verilog HDL 语言的时钟消耗数是可见又可自定义。这就是 Verilog HDL 其中之一的强大之处。在对比实验中学生可以发现一个有趣的现象:并行语言Verilog极力“仿顺序”操作,模仿串行语言。串行语言C极力“仿并行”操作,如“中断”,“状态编程”等模仿并行。通过对比实验学生不但能深刻理解硬件底层逻辑,还能让学生对比实验中学习串行语言和并行语言的优缺点,让学生真正做到知其然也知所以然。能有效提升学生的学习知识运用知识的实践能力。
4 结束语
FPGA的应用越来越重要,尤其是在一切领域都走向人工智能和高速数据交换的时代,FPGA作为数字领域的万能积木,被研发企业越来越重视,FPGA人才需求的缺口也越来越大。而FPGA的入门学习其实并不难,只要设计得当,FPGA是非常适合在学校里做教学使用的。所以,高校的数字电路、单片机、微机原理、数字信号处理乃至通信原理等基础课程及其实验,都可以通过FPGA来实现并能够达到更好的效果。通过FPGA平台体验课程理论会让学生的学习事半功倍,也节省了老师大量的实验准备工作。而从基础课程延展到电子设计竞赛,FPGA也是能派上大用场。每届的全国大学生电子设计竞赛有超过一半的题目可以用FPGA轻松完成,且不会出现由于现场演示不稳定而前功尽弃的遗憾结果。
参考文献:
[1] 王敬美,杨春玲.基于FPGA和UART的数据采集器设计[J].电子器件,2009,32(2):386-389,393.
[2] 方喜波.基于FPGA串口通讯的开发[J].计算机与信息技术,2009(Z2):27-29.
[3] 杨开陵,徐巧玉,王志慧.FPGA那些事儿:Verilog HDL建模设计[M].北京:北京航空航天大学出版社,2013.
【通联编辑:代影】
关键词:实验教学;FPGA;单片机;UART
学习通信工程的过程中离不开大量的实验和动手练习,就如同开车一样,学习理论数载,如果从来没有打几把方向盘,踩几脚油门然后再被教练紧急刹车几次,仍然不会开车。正所谓,看别人做一百次,不如自己练一次。单片机和FPGA为学生学习实践提供了大显身手的平台。学习单片机如同开车,学习FPGA则如同造车,更能让学生理解硬件的底层原理。
1 单片机实现串口通信
以MSP430单片机为例来阐述单片机实现串口通信的过程。MSP430单片机的USART模块可以配置成SPI或UART模式。在UART模式下,其功能结构如图1所示。在单片机串口实验中,对串口的操作实质上是对其寄存器的操作。具体做法是:在UxCTL寄存器中对串口模式设置相关的控制位进行设置;在UxCTL寄存器中对接收相关的控制位进行设置;在UxBR0、UxBR1、UxMCT寄存器中设置波特率控制位;在IE1/2寄存器设置中断允许控制位;在IFG1/2寄存器中设置中断标志位。
MSP430单片机实现串口通信需要按照以下思路来设置和配置各个寄存器:第一,要选择合适的时钟源。MSP430单片机具有多时钟源,可以根据设计的任务和功耗模式来选择不同的时钟源。第二,设置合适的波特率。MSP430单片机的串口特色之一就是小数分频器,一般单片机的数字逻辑无法实现小数分频。分频系数计算公式如式(1):
其中f_BRCLK是波特率发生器的时钟源频率,Baud是所需的波特率,[]表示取整操作。计算结果的高8位用于设UxBR1置寄存器,低8位用于设置UxBR0寄存器。第三,配置收发寄存器。由于MSP430单片机具有独立的串口接收与发送中断,这可以使用前后台的程序架构,在发送与接收中断中读写收发缓冲区,让CPU从等待收发完成中解放出来,从而编写出不阻塞CPU运行的串口收发程序。
把编译后的工程代码下载到MSP430单片机中运行,在PC端利用从“串口调试助手”上发送AA两位数的字符,这些字符经过FPGA串口接收,然后传回到串口助手显示区域显示出来,串口调试助手可以。
2 FPGA实现串口通信
在数字电路中,门电路是最基本的构成单位,可以说任何复杂的数字电路系统都可以通过我们耳熟能详的与门、非门、或门、与非门、异或门等等组合实现。FPGA 是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。其实,FPGA的运算处理方式就类似于我们的大脑。它拥有一个可以储存大量数据的查找表,只要我们通过程序定义出输入与输出之间的逻辑关系,FPGA就可以按照该逻辑关系自行对其内部结构进行重新定义,直白地说,我们采用简单通俗的Verilog语言可以随时给FPGA进行清洗,而后者可以永远不计回报,心甘情愿地被清洗。它就像一个纳米级面包板,你可以把它们连接(wire up)起来做出任何你想要的电路。
UART的数据传输格式:
UART以字符所构成的帧为单位来进行传输帧,而帧的字符位包括:起始位、数据位、奇偶检验位和停止位,其帧结构如图2所示。
串口接收时序图如图3所示,从图中可以看出高电平是串口通信的空闲默认状态,当一帧数据开始传输时必须先拉低电平让接收端识别到发送端有数据要发送,完成串口的握手协议,这是第0位的作用。0位后面是8个是数据位,也是数据传输中最有意义的数据位,最后两位是校验位和停止位。在串口接收时根据波特率的不同按图3串口接收时序所示对各位进行定时数据采集。在第0位数据忽略,后面的8位数据被采集,最后两位是校验位和停止位采用忽略操作。在串口发送时根据波特率的不同对各位进行定时数据发送。
从串口接收时序图3中可以看出串口接收是一个“采样”的过程;该过程主要由电平检测模块(detect_module.v )、波特率产生模块( bps_module.v)和数据接收控制模块(rx_control_module.v)三部分模块来实现。串口接收系统运用Verilog HDL硬件描述语言在QuartusⅡ11.0软件上编译设计,该系统RTL仿真如图4所示。
工程编译后下载到开发板中,在PC端利用串口调试助手在发送区发送 0A ,用串口接收到数据控制开发板上的LED,可以看到开发板上只有第二位和第四位的LED灯亮,如图5所示,说明接收数据为0A完全正确。
3 实验对比分析
本文对比利用MSP430单片机实验完成的串口通信和利用FPGA完成的串口通信实验原理、过程、方法及实验结果,可以发现:在传统的单片机串口实验中,对串口的操作本质上是对串口相关的寄存器进行设置。实际上串口在传输过程中底层数据到底是如何传输的,这些底层深层的东西在传统的单片机串口实验中是不清楚的。就像开车一样,只要挂上挡,踩上油门车就开走了,至于为什么能开走就不知道了。学生也只能对串口通信知其然不知所以然。反之使用FPGA对串口建模,就如同制造了一个汽车,重新构造了一个串口,就会让学生从底层窥探到串口通信原理,增强和加深学生对串口通信的理解与应用。单片机采用串行C語言进行编程,FPGA则用并行语言Verilog控制。C 语言所消耗的时钟数是不可见的,然而 Verilog HDL 语言的时钟消耗数是可见又可自定义。这就是 Verilog HDL 其中之一的强大之处。在对比实验中学生可以发现一个有趣的现象:并行语言Verilog极力“仿顺序”操作,模仿串行语言。串行语言C极力“仿并行”操作,如“中断”,“状态编程”等模仿并行。通过对比实验学生不但能深刻理解硬件底层逻辑,还能让学生对比实验中学习串行语言和并行语言的优缺点,让学生真正做到知其然也知所以然。能有效提升学生的学习知识运用知识的实践能力。
4 结束语
FPGA的应用越来越重要,尤其是在一切领域都走向人工智能和高速数据交换的时代,FPGA作为数字领域的万能积木,被研发企业越来越重视,FPGA人才需求的缺口也越来越大。而FPGA的入门学习其实并不难,只要设计得当,FPGA是非常适合在学校里做教学使用的。所以,高校的数字电路、单片机、微机原理、数字信号处理乃至通信原理等基础课程及其实验,都可以通过FPGA来实现并能够达到更好的效果。通过FPGA平台体验课程理论会让学生的学习事半功倍,也节省了老师大量的实验准备工作。而从基础课程延展到电子设计竞赛,FPGA也是能派上大用场。每届的全国大学生电子设计竞赛有超过一半的题目可以用FPGA轻松完成,且不会出现由于现场演示不稳定而前功尽弃的遗憾结果。
参考文献:
[1] 王敬美,杨春玲.基于FPGA和UART的数据采集器设计[J].电子器件,2009,32(2):386-389,393.
[2] 方喜波.基于FPGA串口通讯的开发[J].计算机与信息技术,2009(Z2):27-29.
[3] 杨开陵,徐巧玉,王志慧.FPGA那些事儿:Verilog HDL建模设计[M].北京:北京航空航天大学出版社,2013.
【通联编辑:代影】