[发明专利]基于FPGA和TL16C554A的多串口扩展方法有效

专利信息
申请号: 201510271444.3 申请日: 2015-05-19
公开(公告)号: CN104866452B 公开(公告)日: 2017-09-26
发明(设计)人: 贾建峰;王常虹;石峰;王贺年 申请(专利权)人: 哈尔滨工业大学(鞍山)工业技术研究院
主分类号: G06F13/40 分类号: G06F13/40;G06F13/42;G06F13/24
代理公司: 暂无信息 代理人: 暂无信息
地址: 114051 辽宁省鞍山市千山中*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提供一种基于FPGA和TL16C554A的多串口扩展方法,采用的硬件包括FPGA、n个TL16C554A芯片、n个串口电平变换芯片,FPGA与DSP通过数据总线、地址总线和控制总线相连接,FPGA作为DSP处理器的异步存储器,完成与DSP的通信,以及TL16C554A芯片的时序驱动、片选译码和中断译码。TL16C554A芯片为异步串行通信的管理单元,包括4个串口通信管理单元,能够将并行数据转换成4路的串行输出,可以实现4个串口的收发管理,能同时实现与4n个设备通讯。本方法是一种占用处理器地址空间和中断资源少,可靠性高,便于移植的多串口扩展方法。
搜索关键词: 基于 fpga tl16c554a 串口 扩展 方法
【主权项】:
一种基于FPGA和TL16C554A的多串口扩展方法,采用的硬件包括FPGA、n个TL16C554A芯片、n个串口电平变换芯片,n为大于等于4的整数,FPGA与DSP通过数据总线、地址总线和控制总线相连接,FPGA作为DSP处理器的异步存储器,只需要DSP的三个地址指针用于实现与DSP的通信,这三个地址指针分别用于保存TL16C554A芯片的控制字C54_CTRL_WORD、发送到串口的数据DATA_TO_C54和从TL16C554A芯片收到来自串口的数据DATA_FROM_C54;其特征在于,具体扩展方法如下:其中,FPGA收到DSP发送的控制字C54_CTRL_WORD为两个字节,FPGA根据控制字C54_CTRL_WORD产生满足TL16C554A芯片的读写时序的控制信号CSD~CSA、Addr2~0、RESET、/IOW、/IOR;实现对TL16C554A芯片的初始化,波特率的设定,以及通过TL16C554A芯片从串口读取或通过串口发送数据,最终达到DSP处理器通过外扩串口与外界通信的目的;C54_CTRL_WORD从高位到低位定义如下:第16位ST为FPGA产生TL16C554A芯片驱动总线的状态位,ST置位时启动FPGA对TL16C554A芯片操作的读或写总线,复位时复位FPGA对TL16C554A芯片操作的读或写总线;第15位RW为FPGA产生的TL16C554A芯片驱动总线的读或写状态位,RW置位时总线为读数据时序,复位时总线写数据时序;第14位到第5位为串口片选控制位,DSP通过这10位数据告诉FPGA对哪个串口进行操作,FGPA根据这10位数据进行片选译码,从而对相应串口进行读写;第4位RESET为TL16C554A芯片的复位控制位,置位时对TL16C554A芯片进行复位操作;低3位为地址,该地址为经过片选译码所对应的TL16C554A芯片的3根地址线A2、A1、A0;FPGA中的时序译码是利用状态机产生满足对TL16C554A芯片操作的读写时序,该状态机根据控制字C54_CTRL_WORD中的总线起始状态位ST来触发或复位状态机,状态机启动时会根据控制字C54_CTRL_WORD中的总线读写状态位RW产生TL16C554A芯片的读或写时序;FPGA中的片选译码是利用组合逻辑对C54_CTRL_WORD的10位片选控制位进行译码,产生某一个TL16C554A芯片的4个片选信号CSA、CSB、CSC和CSD中的某一个串口的片选信号;根据扩展串口数量选择需要的位;FPGA中的中断译码是根据每一个TL16C554A芯片的四个中断信号INTA、INTB、INTC、INTD和RXRDY_n产生给DSP的中断信号,首先,利用组合逻辑将每一个TL16C554A芯片的中断信号INTA、INTB、INTC、INTD取逻辑“或”运算,再与该TL16C554A芯片的信号RXRDY_n的“非”取逻辑“与”运算,即INT_C54_i=(INTA or INTB or INTC or INTD)&(not RXRDY_n);然后将每个TL16C554A芯片的运算后的信号再进行逻辑“或”运算,即C54_INT_Combine=INT_C54_0 or INT_C54_1or … … or INT_C54_n,最后再根据C54_INT_Combine置位时触发FPGA中产生DSP中断的状态机,产生信号给DSP的外中断EXTINT4;当DSP把所有串口数据都读取时,C54_INT_Combine复位,取值为0,产生DSP中断的状态机也复位,同时DSP的外中断EXTINT4信号也复位;在FPGA中自定义设置了串口中断状态寄存器,寄存器的每一位代表一个串口的中断状态,置位时代表该串口有数据中断产生,复位时表示没有数据中断或产生中断的数据已经被读取,该寄存器的个数根据串口数量设置;当某一个串口有数据收到时,即有一个字节到达该串口的接收缓冲寄存器RBR,则该串口的中断标志寄存器IIR的值为0x04,同时该串口对应TL16C554A芯片的四个中断信号INTA、INTB、INTC、INTD中的那一个被拉高,产生高电平中断信号,而且,该TL16C554A芯片的RXRDY_n被拉低表示数据准备好,只有当RBR中的数据被读取后,对应的中断信号和RXRDY_n才恢复默认值,通过FPGA的中断译码程序,保证每个串口有数据收到时都能够产生中断,而且只有数据被读取后中断才能消除,不会有数据接收到而没被读取的情况;所有扩展的串口都采用查询发送,中断接收,为DSP处理器扩展32串口其过程具体如下:查询发送过程:(1.1):查询第15个串口的发送保持寄存器THR是否为空的标志位,即第15个串口对应的线性状态寄存器LSR:地址0x05的第6位是否置位,DSP将2字节的控制字保存到控制字的指针地址中,即*CTRL_WORD_C54=addr+cs_num+0xC000;其中,ST=1触发TL16C554A时序状态机标志位;RW=1产生TL16C554A的读时序标志位;addr=0x05,即线性状态寄存器LSR的地址;cs_num为发送到串口序号,第15个串口对应cs_num=0x00F0;(1.2):FPGA通过控制字CTRL_WORD_C54指针译码,将控制字的值保存到FPGA中;(1.3):FPGA对控制字CTRL_WORD_C54的值进行译码:从控制字定义得出的ST、RW、cs_num和addr的值,控制字的值为0xC0F5,从而ST=1,RW=1,cs_num=0x00F0,addr=0x05;(1.4):FPGA根据控制字中的ST、RW、addr产生TL16C554A的控制时序;ST=1,RW=1,addr=0x05则表示启动TL16C554A的读时序,产生TL16C554A的片选信号CSx:cs_num=0x00F0,产生的CSx信号对应第4片TL16C554A芯片的CSD,读信号IOR,并将控制字中的地址addr按照时序送到TL16C554A芯片的IOR、CSD、A2、A1、A0的管脚上,由状态机根据时序要求从D7~D0读取1个字节的数据,读时序完成后,控制字所指定地址:0x05,线性状态寄存器LSR的1个字节数据就到达FPGA中DSP数据指针:*DATA_FROM_C54所指定的空间;(1.5):DSP通过指针*DATA_FROM_C54读取1个字节的值,即LSR的值;(1.6):与0x20取逻辑“与”运算,判断是否为1;如果是说明串口15的发送保持寄存器空,进行发送数据,跳到下一步;否则,表示发送保持寄存器有数据没有发送完成,则跳到第(1.1)步;(1.7):将待发送的1个字节数保存到DATA_TO_C54的指针中,即*DATA_TO_C54=data;(1.8):FPGA通过对DATA_TO_C54的指针地址译码,将1字节的数据保存到FPGA中;(1.9):将2字节的控制字保存到控制字的指针地址中,即*CTRL_WORD_C54=addr+cs_num+0x8000;其中,ST=1触发TL16C554A时序状态机标志位;RW=0产生TL16C554A的写时序标志位;addr=0x00,即发送保持寄存器THR的地址;cs_num为发送到串口号,第15个串口对应cs_num=0x00F0;(1.10):FPGA通过对控制字CTRL_WORD_C54的地址进行译码,将控制字的值保存到FPGA中;(1.11):FPGA根据控制字中的ST、RW、cs和addr的值进行相关操作;从控制字定义得ST=1,RW=0,cs=0x00F0,addr=0x00;(1.12):FPGA进行片选译码;根据cs_num的值将产生TL16C554A时序的状态机输出片选信号CS连接到对应的串口片选信号上,cs_num=0x00F0,即对应串口号15,状态机输出的CS片选信号则直接给第4片TL16C554A芯片的CSD;(1.13):FPGA根据控制字中的ST、RW、addr产生TL16C554A的控制时序;ST=1,RW=0,addr=0x00,则表示启动TL16C554A的写时序,产生TL16C554A的片选信号CSx,cs_num=0x00F0,产生的CSx信号对应第4片TL16C554A芯片的CSD,写信号IOW,并将控制字中的地址addr和步骤(1.7)中保存的待发送数据DATA_T0_C54按照时序要送到TL16C554A芯片的IOW、CSD、A2、A1、A0和D7~D0的管脚上,写时序完成后,要发送的一个字节就到达TL16C554A芯片的发送保持寄存器THR中;(1.14):TL16C554A芯片将THR中的数据发送到串口输出信号上;THR中的数据由发送移位寄存器按照设置好的波特率,再添加上起始位和停止位后按位写到串口的发送信号线TXD上,完成一个字节的发送;中断接收过程:(2.1):当有一个或多个串口收到数据,TL16C554A芯片成功收到后将数据保存到串口对应通道的接收数据缓冲寄存器RBR,同时TL16C554A芯片将对应的有数据收到串口的中断信号线INTx拉高,并且将RXRDY_n拉低;(2.2):FPGA根据TL16C554A芯片的中断信号INTx将自定义的中断寄存器C54_INT_REG0和C54_INT_REG1中对应有数据收到串口的“位”置1,等到数据被读取后,FPGA会根据TL16C554A芯片的中断信号INTx的清除再将自定义的中断寄存器C54_INT_REG0和C54_INT_REG1中对应有数据收到而且被读取的串口对应的“位”置0;(2.3):同时,FPGA中的中断译码程序根据INT_C54_i=(INTA or INTB or INTC or INTD)&(not RXRDY_n)和C54_INT_Combine=INT_C54_0 or INT_C54_1 or … … or INT_C54_8运算后产生满足DSP中断的高电平信号C54_INT_Combine,从而触发FPGA中的中断的状态机产生DSP外部中断低信号EXTINT4,该状态机等待中断C54_INT_Combine清除后回到idle状态;(2.4):DSP收到外部中断EXTINT4进入中断服务程序;(2.5):首先读取中断状态寄存器C54_INT_REG0和C54_INT_REG1的值,即C54_INT_REG0_value=*C54_INT_REG0、C54_INT_REG1_value=*C54_INT_REG1;(2.6):从低到高依次判断中断寄存器其值C54_INT_REG0_value和C54_INT_REG0_value的每一位,如果为1跳到下一步,否则判断下一位;设置循环计数器,该计数器的值代表串口号,从0到31,每判断一位,对应计数器值加1;(2.7):DSP把读第i个串口,设为第0个串口的接收缓冲寄存器RBR,TL16C554A芯片对应的地址为0x00的控制字写入控制字指针,即*CTRL_WORD_C54=0x00+0x000+0xC000;(2.8):FPGA根据控制字CTRL_WORD_C54的指针地址进行译码,将控制字的值保存到FPGA中;(2.9):FPGA对控制字CTRL_WORD_C54的值进行译码:根从控制字定义得出的ST、RW、cs和addr的值,控制字的值为0xC000,从而ST=1,RW=1,cs_num=0x0000,addr=0x00;(2.10):FPGA进行片选译码:根据cs_num的值产生TL16C554A的时序状态机的输出片选信号CSx,并将片选信号CSx输出给对应的串口片选信号上;设cs_num=0x0000,即对应串口号0,状态机输出的片选信号CSx则直接给第1片TL16C554A芯片的CSA;(2.11):FPGA根据控制字中的ST、RW、addr产生TL16C554A的控制时序:ST=1,RW=1,addr=0x00表示启动TL16C554A的读时序,产生TL16C554A的片选信号CSx,读信号IOR,并将控制字中的地址addr按照时序要分别输出到C54的IOR、CSA、A2、A1、A0的管脚上,由状态机根据时序要求从D7~D0读取1个字节的数据,读时序完成后,控制字所指定地址:0x00,接收缓冲寄存器RBR的1个字节数据就到达FPGA中DSP数据指针*DATA_FROM_C54所指定的空间;(2.12):DSP通过指针*DATA_FROM_C54读取1个字节的值,即RBR中的数据,也就是控制字中cs_num所对应串口收到的数据;(2.13):判断第(2.6)步中的循环计数器是否等于31,如果不等于跳到第(2.6)步继续执行;否则,跳到下一步执行;(2.14):当所有串口数据都被读取后,8片TL16C554A芯片的中断信号INTA、INTB、INTC、INTD都被置低,RXRDY_n被拉高,FPGA中的中断状态机复位,DSP跳出中断服务程序,等待下次中断触发。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学(鞍山)工业技术研究院,未经哈尔滨工业大学(鞍山)工业技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510271444.3/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top