基于FPGA的串行接口芯片的设计与应用

2011-10-09 09:45秦实宏姚湘陵
电子设计工程 2011年23期
关键词:逻辑芯片模块

王 敏,秦实宏,陈 腾,姚湘陵

(武汉工程大学 电气信息学院,湖北 武汉 430205)

随着计算机技术的快速发展,串行通讯的应用非常广泛,为实现串行通信功能一般使用专用串行接口芯片,但是这种接口芯片存在体积较大、接口复杂以及成本较高的缺点,使得硬件设计更加复杂,并且结构与功能相对固定,无法根据设计的需要对其逻辑控制进行灵活的修改[1]。在传统的微机接口实验箱上作进一步开发。为进一步提高实验效果和学生动手能力,实验中增加芯片设计部分,为硬件描述语言的理论教学提供实验机会。同时接口芯片不再采用传统的通用芯片,而用FPGA实现,提供源代码,在实验中直接对FPGA进行编程。利用FPGA代替传统的接口实验芯片,使得系统内硬件的功能可以像软件一样被编程。这种设计方法运用到实际的硬件实验环境中,增强与拓宽了实验系统的功能,使实验系统具有极强的灵活性和适应性。

1 总体设计方案

利用FPGA进行串行接口芯片的设计,其设计平台结构框图如图1所示,其中,软件平台采用多功能微型计算机实验软件 MFS(Multi Function Soft,简称 MF),MF 将实验程序开发工具(汇编语言、C/C++语言程序开发包),故障诊断程序和外设模块实验演示程序集成在一个环境中,构成一个用户应用程序集成开发环境(IDE)。芯片设计完成后,将其源程序下载到FPGA中,通过USB与PC机连接,在IDE软件平台中编写上位机程序来完成芯片设计的验证工作,被控设备为微机接口实验箱。

图1 平台结构框图Fig.1 Structure diagram of platform

2 芯片设计

可编程串行接口芯片8251A是用来作为CPU与外设或调制解调器之间的接口芯片,适合作异步起止式数据格式和同步面向字符数据格式的接口芯片,其功能很强[2]。8251A的内部结构如图2所示。从功能上将其分为5个部分:数据总线缓冲、读/写控制逻辑、发送模块、接收模块、调制控制模块。

根据8251A的外部特性和内部逻辑,采用层次和模块化的方法,将顶层设计中分为4个模块,如图3所示。在模块内部定义了发送和接收数据的缓存寄存器,用于实现数据总线缓冲器。

图2 8251A内部结构框图Fig.2 Internal structure of 8251A

图3 8251A模块划分Fig.3 Module division of 8251A

图3中,左边与CPU相连,右边与其他串行接口相连。数据在控制信号的作用下首先被保存在锁存模块中,锁存模块再根据CnD信号将方式命令字和数据分别送给方式字和命令字处理模块和发送逻辑模块处理。方式字和命令字处理模块接收方式字并解析命令字产生控制信号。发送逻辑模块和接收逻辑模块是主要模块,分别实现数据的发送和接收,实现发送和接收过程控制分别由发送和接收状态机完成[3]。

2.1 锁存模块

该模块完成CPU端数据和地址的锁存,通过nCS与nWR信号有效来锁存地址和数据。

2.2 方式字和命令字处理模块

方式字和命令字处理模块完成初始化的方式字和命令字解码,产生各种控制信号,并处理初始化完成后的命令字。复位信号生效后,数据输入端(din)的方式字同步于时钟输出到方式字输出(mode_out),同时设置方式字设置完成有效,然后才能解析接收到的命令字来输出错误复位、发送接收使能信号位有效。

在8251A的应用上,CPU端发送方式字和命令字是有先后顺序的,先发送方式字后,才能再发送后续的各种命令字。需要设置一个方式字完成标识信号,或者使用一个简单的状态机完成方式字和命令字的处理,方式字命令字的处理还要注意和时钟同步,可以加入中间寄存器,中间寄存器根据读写逻辑保存方式字和命令字,然后通过时钟同步输出。

2.3 发送逻辑模块

发送逻辑模块根据方式字的设置,按照规定的字长、奇偶位和停止位来发送数据,该模块主要实现并串数据转换、按顺序的数据发送、生成奇偶校验码、分频计数等功能。按照这个思路可将发送逻辑模块分为几个子模块,如图4所示。其中Tx_fifo为可选子模块,用于数据的缓存,Tx_shift_mux为并串转换移位输出子模块。Tx_state_machine为发送状态机子模块,Tx_clk_cn为发送数据位和分频计数子模块,Tx_parity_gen为奇偶校验位生成模块,这3个子模块产生信号控制Tx_shift_mux按照方式字的要求同步于发送时钟输出串行数据。

图4 发送逻辑模块的子模块划分Fig.4 Sub-module division of send logic module

2.4 接收逻辑模块

接收逻辑模块和发送逻辑模块的实现类似,只是数据流方向相反,当检测到串行输入引脚RxD上为低电平时,开始接收数据。数据接收部分将接收的串行数据转换成并行数据,并作错误检查,更新状态字,使RxRDY引脚信号有效。该模块可分成4个子模块来实现,如图5所示,Rx_shift_mux子模块将串行数据转换成并行数据,Rx_clk_cn子模块对接收的数据位和时钟分频计数,Rx_state_machine为主要控制子模块,Rx_parity子模块为奇偶校验子模块。接收逻辑模块中最后的并行数据需要用寄存器缓存。

图5 接收逻辑模块的子模块划分Fig.5 Sub-module division of receive logic module

3 实验应用

3.1 8251A功能仿真

完成芯片的设计和VHDL源代码实现后,通过Modelsim软件来验证逻辑的正确性[4]。仿真中需要测试文件来产生信号激励,同时对接收的数据进行验证。测试模块和8251A的连接方式如图6所示。

图6 功能仿真信号连接图Fig.6 Functional simulation signal connection diagram

8251A_top为测试系统最顶层的模块,8251Atb为Test Bench模块,该模块产生激励信号,先后写方式字和命令字,然后发送数据,由于8251A的txd和rxd相连,发送的数据又可通过rxd读回来,通过比较写的数据和读的数据,如果相同则发送和接收都不存在问题,由于8251A功能特性较多,这里只作基本的数据发送和接收功能的测试。测试文件的实现流程如图7所示。

图7 测试文件实现流程图Fig.7 Flow chart of test file

ModelSim中仿真的波形如图8所示。根据8251A的外部特性和内部结构,从图中可以看出基本的数据发送和接收数据和信号都符合逻辑要求,各种状态中断信号也满足要求。

图8 功能仿真波形图Fig.8 Oscillogram of functional simulation

3.2 综合实现

FPGA开发板是以Xilinx公司的Spartan 3A系列中的XC3S200A为主芯片,采用Xilinx提供的开发套件ISE来完成芯片设计的验证工作。综合完成后的逻辑网表使用ISE工具将网表中的逻辑单元配置到具体型号的FPGA器件上,这个工作称为“实现”(Implementation)。Xilinx的实现过程分为翻译(Translate)、映射(Map)和布局布线(Place&Route)3 步[5]。

3.3 下载测试

在布局布线完成后,使用ISE的iMPACT工具可以将生成的配置文件加载到实际的硬件环境中测试,成功配置好FPGA后,编写上位机来测试设计的芯片8251A,下载芯片代码对FPGA编程,打开WINDOWS超级终端,选择波特率9 600,根据程序设置8位数据位,1位停止位,无奇偶校验,数据流控制设置为”Xon/Xoff”,在多功能微机接口与原理实验平台上,可实现8251A与主机RS232接口的通信。实验现象为:在超级终端中输入字符,实验运行环境下能接收到;在实验环境下输入字符,超级终端中能接收到。如图9所示:

图9 实验现象Fig.9 Experimental phenomena

4 结 论

采用FPGA设计串行接口芯片8251A,实现了8251A的异步传输方式,数据的发送和接收,由于FPGA芯片具有重复编程的能力,该方案可以应用于接口实验系统设计中,根据不同的实验要求规划不同的实验控制逻辑,然后将实验逻辑下载到FPGA芯片中完成实验功能。与传统的接口实验方法相比较,实验时可以省去了大量繁琐的接线时间,可以把重点放在电路的设计、仿真和验证上,可以更好地达到实验目的,增强与拓宽了实验系统的功能,使实验系统具有极强的灵活性和适应性。随着计算机技术的发展,计算机教学实验的内容和方法也应改变。但是,目前计算机实验教学中,仍然是“验证式”的实验为主,而“开放式”的设计与制作型实验还很少,其中的一个原因就是实验设备和实验条件的限制[6]。的设计方法可以应用于实验设备改进,为微机接口实验课程改革提供了基础,让单一的“验证式”传统实验教学模式,尽早改变成既有“验证式”,又有“开放式”实验教学模式。

[1]王利民,屠玲刚,潘忠鸽,等.基于FPGA的串口通信设计与实现[J].黑龙江科技信息,2010(21):88-89.

WANG Li-min,TU Ling-gang,PAN Zhong-ge,et al.Design and implementation of serial port communication based on FPGA[J].Heilongjiang Science and Technology Information,2010(21):88-89.

[2]周功业,黄文兰,卢建华.现代微机系统与接口技术[M].北京:高等教育出版社,2005.

[3]王子剑,田小刚,邬军伟.基于FPGA的异步串行通讯[J].广西工学院学报,2008,19 (4):25-29.

WANG Zi-jian,TIAN Xiao-gang,WU Jun-wei.Asynchronous serial port communication based on FPGA [J].Journal of Guangxi University of Technology,2008,19(4):25-29.

[4]杨跃.FPGA应用开发实战技巧精粹[M].北京:人民邮电出版社,2009.

[5]孙航,胡灵博,于连锋,等.Xilinx可编程逻辑器件应用与系统设计[M].北京:电子工业出版社,2008.

[6]李欣光.探讨基于FPGA技术的微机组成原理实验系统[J].实验室科学,2009,12(6):79-81.

LI Xin-guang.An FPGA-based experimentsystem for principles of microcomputers[J].Laboratory Science,2009,12(6):79-81.

猜你喜欢
逻辑芯片模块
刑事印证证明准确达成的逻辑反思
芯片会议
28通道收发处理模块设计
“选修3—3”模块的复习备考
逻辑
创新的逻辑
关于射频前端芯片研发与管理模式的思考
女人买买买的神逻辑
多通道采样芯片ADS8556在光伏并网中的应用
集成水空中冷器的进气模块