基于CPLD的多数码管驱动电路的仿真与设计
基于CPLD的多数码管驱动电路的仿真与设计[20191213113130]
摘 要
通用异步收发器(UART)是数字通信领域流行和广泛使用的一种接口设备,主要用来控制符合RS232-C协议的计算机与串行设备间的通信。串行外设和计算机间的通信一般使用通用的串行接口芯片(如美信公司生产的MAX232芯片),但由于其体积较大,不利于集成,而日趋成熟的片上系统(SOC)技术则要求将整个设计的功能集成在较少的芯片中,因而本课题将UART内核集成在CPLD上,使用Verilog HDL语言开发,实现了CPLD与计算机之间的通信。
首先,本文在UART协议中,设计了发送、接收和波特率时钟控制等三个模块,其中,发送和接收模块用于实现数据交互,波特率时钟控制模块以分频器方式提供标准波特率。通过有限状态机技术对每个模块的不同状态及其状态转换进行了详细的设计,并利用ModelSim软件对各模块功能进行了波形仿真,仿真结果表明,各模块单独工作正常。
其次,为进一步验证本课题所设计的UART内核功能,进行了模块间的联合仿真,仿真结果表明,模块间协调正常,时序无误,能够完整地实现UART协议的全部功能。
最后,为直观地测试协议功能,本文利用搭载UART内核的CPLD芯片驱动了两位数码管。设计了数码管接口电路和相应的Verilog HDL程序模块,利用Modelsim模拟上位机的输出,CPLD作为下位机,通过三种显示方式实现了上位机对数码管的一系列操作。三种方式分别为:显示相同数字;显示不同数字;显示指定数字。
本课题设计实现了基于UART协议的CPLD数码管显示模块,体现了系统集成的思想,整体效果良好。以该模块为原型的系统可以满足低速串行通信要求,以UART作为底层模块,实现更多上层功能,使整个系统灵活、紧凑,性能稳定。
查看完整论文请+Q: 351916072
关键字:UART协议;CPLD;VerilogHDL;有限状态机;数码管显示
Keywords:UART ;CPLD ;Verilog HDL;Finite state machine ;Digital LED display目 录
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1背景 1
1.2多数码管驱动电路的现状 1
1.3课题意义 2
1.4本次设计的主要内容及章节安排 2
第2章 系统总体结构设计 4
2.1 系统总体结构框图 4
2.2 CPLD芯片外部接口 4
2.3 CPLD内部模块 4
第3章 UART协议的仿真与设计 5
3.1 UART介绍 5
3.2 UART的CPLD实现 7
3.3接收模块 8
3.3.1 接收模块流程图 8
3.3.2 接收模块的主体构成 9
3.4 发送模块 14
3.4.1 发送模块流程图 14
3.4.2 发送模块的主体构成 15
3.5 波特率时钟控制模块 21
3.6 UART核 24
3.7主模块 25
3.8 UART仿真测试 25
第4章 多数码管驱动电路的设计 28
4.1 数码管的选择 28
4.2 数码管的驱动方式 29
4.3多数码管驱动电路的硬件设计 30
4.4 多数码管驱动电路的软件设计 31
4.4.1 软件设计综述 31
4.4.2功能一 32
4.4.3功能二 36
4.4.4功能三: 41
第5章 论文总结与展望 43
5.1 论文总结 43
5.2 论文的不足与展望 44
5.2.1 论文的不足 44
5.2.2 关于设计内容的展望 44
参考文献 45
致 谢 46
附录1 软件设计部分程序 47
第1章 绪论
1.1背景
通用异步收发器(UART)是数字通信领域流行和广泛使用的一种接口设备,主要用来控制符合符合RS232-C协议的计算机与串行设备间的通信。普通串行外设和计算机间的通信,一般使用通用的串行接口芯片,但是这种接口芯片存在体积较大、接口复杂以及成本较高的缺点,会使得硬件设计更加复杂,并且结构与功能相对固定,无法根据设计的需要对其逻辑控制进行灵活的修改。而且日趋成熟的SOC技术则要求将整个设计的功能集成在单片或几块芯片当中。UART采用通用的RS232—C串行接口标准,该协议的优点是使用广泛,几乎所有计算机和串行外设当中都置有这种接口,其传输距离可达15m,并且实现较简单,用于双向连接时最少只需要2条导线即可实现基本通信。
1.2多数码管驱动电路的现状
通过查阅文献,对于多数码管驱动电路系统的设计以及现状都有了较为全面的了解。
文献[1]主要介绍了基于MAX7219的数码管显示驱动设计,设计了驱动8位数码管的硬件电路,提出了自定义编码方式,在此基础上分析了数据传输过程,并设计了控制程序,实现了数码管的动态显示。
文献[2]主要介绍了基于51系列单片机89C2051驱动LED数码管显示的设计。同文献[1]一样,该设计也利用了MAX7219芯片,节省了单片机的I/O口资源,实现了对助航灯调光器电压电流的显示。
文献[3]主要介绍了利用PLC来实现LED数码管动态扫描数据显示。该设计利用少量PLC输出点驱动两组数码管,同时实现了再两组数码管上显示变化等等数据,并介绍了软、硬件设计实现的实例,在满足工业控制要求的同时降低了成本。
文献[4]主要介绍了基于VHDL语言的数码管闪烁控制的实现。该设计在MAX-PLUS II开发环境下,用VHDL语言设计一种用于控制8路数码管闪烁的电路,且该电路有4种花型,可以变换速度。
文献[5]主要介绍了基于FPGA的并行数码管显示控制设计。该设计在硬件物理层实现串行数据的接收和硬件编码,而该物理层是采用VerilogHDL编程在FPGA上实现。利用FPGA硬件执行的并行性解决传统设计方法中难以克服的多组多位数码管显示抖动问题。
文献所设计的多数码管驱动电路系统基本上可以代表了多数码管驱动电路的现状,可以说都有各自的特点,但是在满足了基本需求外,有些设计还存在一些缺陷,比如,硬件电路较为复杂,显示存在抖动问题。
1.3课题意义
随着微机系统的广泛运用和微机网络的极大发展,串行通信成为了一种广泛运用的数据通信方式,常用的串行接口芯片如8250、8251等,能够实现比较全面的串行通信功能。而在实际运用中,我们有时只需要使用UART的部分功能,从而造成一定的资源浪费。随着CPLD的飞速发展与其在现代电子设计中的广泛应用, CPLD的功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。因此我们可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。基于这种思想,在设计中使用Verilog HDL设计实现了UART的核心功能。而且数字化的数码管显示技术在现代工业控制以及医疗器械方面应用广泛,而随着显示数据位的不断增加,传统的基于单片机、外部锁存器和外部译码器的设计显得愈发的复杂和繁琐,设计成本也相应的增加,显示抖动的问题愈发严重。而利用CPLD硬件的并行性操作可以完全消除抖动问题,同时提高了设计的可靠性,简化了设计,降低了成本。同时在进行系统模块设计以及后期的仿真验证时,都不需要具体硬件的支持,而在完成布线后的时序仿真满足时序要求后,只需将文件烧进硬件上即可,这是传统设计无法做到的。
1.4本次设计的主要内容及章节安排
本次毕业设计中,主要运用Modelsim编写设计了一个比较完整的多数码管驱动电路系统,设计内容主要有以下几个部分:
1.UART协议的仿真与设计
该部分主要是用Modelsim软件编写UART协议的IP核,并进行仿真验证。此部分是该系统的核心部分,完成了该部分,才能对以下模块进行设计。
2.多数码管驱动电路的设计
这一部分主要是设计驱动多数码管的硬件电路,并根据硬件电路编写驱动数码管的程序。
本文的章节安排如下:
第一章、绪论。主要综述了课题研究的背景,概述了多数码管驱动电路系统相关技术的发展概论,阐述了本课题的以及研究意义以及本文设计要点及章节安排。
第二章、系统总体结构设计。介绍了基于CPLD的多数码管驱动电路系统总体结构设计。
第三章、UART协议的仿真与设计。介绍了UART和UART的各个模块,并进行仿真验证。
第四章、多数码管驱动电路的设计。概括了系统的硬件设计部分,具体介绍本设计各个组成部分的结构,原理,特点。
第五章、总结与展望。
第2章 系统总体结构设计
2.1 系统总体结构框图
系统总体结构框图如图2.1所示,RS232总线经电平转换后将输入信号传输到CPLD芯片,经CPLD芯片进行数据处理后,输出信号控制数码管。
图2.1 总体结构框图
2.2 CPLD芯片外部接口
如图2.2所示,CPLD芯片外部要接外部时钟信号、晶振和3.3V电源。
图2.2 CPLD芯片外部接口
2.3 CPLD内部模块
CPLD内部模块主要分为两个模块。
第一个模块是RS232转换模块,即UART核模块。
第二个模块是驱动数码管模块,该模块既包括驱动电路的硬件设计也包括软件设计。
下面两章内容加分别介绍这两个模块。
第3章 UART协议的仿真与设计
3.1 UART介绍
UART是一种通用串行数据总线,用于异步通信 。该总线双向通信,可以实现全双工传输 和接收。
UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率 同步。如果选择了奇偶,UART就在数据位 后面加上奇偶位。奇偶位可用来帮助错误校验。
在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验 ,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。
UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
图3.1 UART数据格式图
UART数据如图3.1所示,其中各位的意义如下:
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验 ),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机 校正时钟同步 的机会。适用于停止位的位数越多,不同时钟同步 的容忍程度越大,但是数据传输率同时也越慢。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指标。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率 为10×120=1200位/秒=1200波特。
图3.2 UART结构框图
摘 要
通用异步收发器(UART)是数字通信领域流行和广泛使用的一种接口设备,主要用来控制符合RS232-C协议的计算机与串行设备间的通信。串行外设和计算机间的通信一般使用通用的串行接口芯片(如美信公司生产的MAX232芯片),但由于其体积较大,不利于集成,而日趋成熟的片上系统(SOC)技术则要求将整个设计的功能集成在较少的芯片中,因而本课题将UART内核集成在CPLD上,使用Verilog HDL语言开发,实现了CPLD与计算机之间的通信。
首先,本文在UART协议中,设计了发送、接收和波特率时钟控制等三个模块,其中,发送和接收模块用于实现数据交互,波特率时钟控制模块以分频器方式提供标准波特率。通过有限状态机技术对每个模块的不同状态及其状态转换进行了详细的设计,并利用ModelSim软件对各模块功能进行了波形仿真,仿真结果表明,各模块单独工作正常。
其次,为进一步验证本课题所设计的UART内核功能,进行了模块间的联合仿真,仿真结果表明,模块间协调正常,时序无误,能够完整地实现UART协议的全部功能。
最后,为直观地测试协议功能,本文利用搭载UART内核的CPLD芯片驱动了两位数码管。设计了数码管接口电路和相应的Verilog HDL程序模块,利用Modelsim模拟上位机的输出,CPLD作为下位机,通过三种显示方式实现了上位机对数码管的一系列操作。三种方式分别为:显示相同数字;显示不同数字;显示指定数字。
本课题设计实现了基于UART协议的CPLD数码管显示模块,体现了系统集成的思想,整体效果良好。以该模块为原型的系统可以满足低速串行通信要求,以UART作为底层模块,实现更多上层功能,使整个系统灵活、紧凑,性能稳定。
查看完整论文请+Q: 351916072
关键字:UART协议;CPLD;VerilogHDL;有限状态机;数码管显示
Keywords:UART ;CPLD ;Verilog HDL;Finite state machine ;Digital LED display目 录
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1背景 1
1.2多数码管驱动电路的现状 1
1.3课题意义 2
1.4本次设计的主要内容及章节安排 2
第2章 系统总体结构设计 4
2.1 系统总体结构框图 4
2.2 CPLD芯片外部接口 4
2.3 CPLD内部模块 4
第3章 UART协议的仿真与设计 5
3.1 UART介绍 5
3.2 UART的CPLD实现 7
3.3接收模块 8
3.3.1 接收模块流程图 8
3.3.2 接收模块的主体构成 9
3.4 发送模块 14
3.4.1 发送模块流程图 14
3.4.2 发送模块的主体构成 15
3.5 波特率时钟控制模块 21
3.6 UART核 24
3.7主模块 25
3.8 UART仿真测试 25
第4章 多数码管驱动电路的设计 28
4.1 数码管的选择 28
4.2 数码管的驱动方式 29
4.3多数码管驱动电路的硬件设计 30
4.4 多数码管驱动电路的软件设计 31
4.4.1 软件设计综述 31
4.4.2功能一 32
4.4.3功能二 36
4.4.4功能三: 41
第5章 论文总结与展望 43
5.1 论文总结 43
5.2 论文的不足与展望 44
5.2.1 论文的不足 44
5.2.2 关于设计内容的展望 44
参考文献 45
致 谢 46
附录1 软件设计部分程序 47
第1章 绪论
1.1背景
通用异步收发器(UART)是数字通信领域流行和广泛使用的一种接口设备,主要用来控制符合符合RS232-C协议的计算机与串行设备间的通信。普通串行外设和计算机间的通信,一般使用通用的串行接口芯片,但是这种接口芯片存在体积较大、接口复杂以及成本较高的缺点,会使得硬件设计更加复杂,并且结构与功能相对固定,无法根据设计的需要对其逻辑控制进行灵活的修改。而且日趋成熟的SOC技术则要求将整个设计的功能集成在单片或几块芯片当中。UART采用通用的RS232—C串行接口标准,该协议的优点是使用广泛,几乎所有计算机和串行外设当中都置有这种接口,其传输距离可达15m,并且实现较简单,用于双向连接时最少只需要2条导线即可实现基本通信。
1.2多数码管驱动电路的现状
通过查阅文献,对于多数码管驱动电路系统的设计以及现状都有了较为全面的了解。
文献[1]主要介绍了基于MAX7219的数码管显示驱动设计,设计了驱动8位数码管的硬件电路,提出了自定义编码方式,在此基础上分析了数据传输过程,并设计了控制程序,实现了数码管的动态显示。
文献[2]主要介绍了基于51系列单片机89C2051驱动LED数码管显示的设计。同文献[1]一样,该设计也利用了MAX7219芯片,节省了单片机的I/O口资源,实现了对助航灯调光器电压电流的显示。
文献[3]主要介绍了利用PLC来实现LED数码管动态扫描数据显示。该设计利用少量PLC输出点驱动两组数码管,同时实现了再两组数码管上显示变化等等数据,并介绍了软、硬件设计实现的实例,在满足工业控制要求的同时降低了成本。
文献[4]主要介绍了基于VHDL语言的数码管闪烁控制的实现。该设计在MAX-PLUS II开发环境下,用VHDL语言设计一种用于控制8路数码管闪烁的电路,且该电路有4种花型,可以变换速度。
文献[5]主要介绍了基于FPGA的并行数码管显示控制设计。该设计在硬件物理层实现串行数据的接收和硬件编码,而该物理层是采用VerilogHDL编程在FPGA上实现。利用FPGA硬件执行的并行性解决传统设计方法中难以克服的多组多位数码管显示抖动问题。
文献所设计的多数码管驱动电路系统基本上可以代表了多数码管驱动电路的现状,可以说都有各自的特点,但是在满足了基本需求外,有些设计还存在一些缺陷,比如,硬件电路较为复杂,显示存在抖动问题。
1.3课题意义
随着微机系统的广泛运用和微机网络的极大发展,串行通信成为了一种广泛运用的数据通信方式,常用的串行接口芯片如8250、8251等,能够实现比较全面的串行通信功能。而在实际运用中,我们有时只需要使用UART的部分功能,从而造成一定的资源浪费。随着CPLD的飞速发展与其在现代电子设计中的广泛应用, CPLD的功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。因此我们可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。基于这种思想,在设计中使用Verilog HDL设计实现了UART的核心功能。而且数字化的数码管显示技术在现代工业控制以及医疗器械方面应用广泛,而随着显示数据位的不断增加,传统的基于单片机、外部锁存器和外部译码器的设计显得愈发的复杂和繁琐,设计成本也相应的增加,显示抖动的问题愈发严重。而利用CPLD硬件的并行性操作可以完全消除抖动问题,同时提高了设计的可靠性,简化了设计,降低了成本。同时在进行系统模块设计以及后期的仿真验证时,都不需要具体硬件的支持,而在完成布线后的时序仿真满足时序要求后,只需将文件烧进硬件上即可,这是传统设计无法做到的。
1.4本次设计的主要内容及章节安排
本次毕业设计中,主要运用Modelsim编写设计了一个比较完整的多数码管驱动电路系统,设计内容主要有以下几个部分:
1.UART协议的仿真与设计
该部分主要是用Modelsim软件编写UART协议的IP核,并进行仿真验证。此部分是该系统的核心部分,完成了该部分,才能对以下模块进行设计。
2.多数码管驱动电路的设计
这一部分主要是设计驱动多数码管的硬件电路,并根据硬件电路编写驱动数码管的程序。
本文的章节安排如下:
第一章、绪论。主要综述了课题研究的背景,概述了多数码管驱动电路系统相关技术的发展概论,阐述了本课题的以及研究意义以及本文设计要点及章节安排。
第二章、系统总体结构设计。介绍了基于CPLD的多数码管驱动电路系统总体结构设计。
第三章、UART协议的仿真与设计。介绍了UART和UART的各个模块,并进行仿真验证。
第四章、多数码管驱动电路的设计。概括了系统的硬件设计部分,具体介绍本设计各个组成部分的结构,原理,特点。
第五章、总结与展望。
第2章 系统总体结构设计
2.1 系统总体结构框图
系统总体结构框图如图2.1所示,RS232总线经电平转换后将输入信号传输到CPLD芯片,经CPLD芯片进行数据处理后,输出信号控制数码管。
图2.1 总体结构框图
2.2 CPLD芯片外部接口
如图2.2所示,CPLD芯片外部要接外部时钟信号、晶振和3.3V电源。
图2.2 CPLD芯片外部接口
2.3 CPLD内部模块
CPLD内部模块主要分为两个模块。
第一个模块是RS232转换模块,即UART核模块。
第二个模块是驱动数码管模块,该模块既包括驱动电路的硬件设计也包括软件设计。
下面两章内容加分别介绍这两个模块。
第3章 UART协议的仿真与设计
3.1 UART介绍
UART是一种通用串行数据总线
UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位
在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节
UART作为异步串口通信协议
图3.1 UART数据格式图
UART数据如图3.1所示,其中各位的意义如下:
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特
图3.2 UART结构框图
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jxgc/zdh/4929.html