摘 要: 为了简化应用系统中的三线制同步串行通信扩展 接口 ,减小系统体积,降低系统功耗,通过研究三线制同步串行通信的原理,利用 FPGA ,结合硬件描述语言VHDL,设计了三线制同步串行通信控制器功能框架结构,介绍了各组成模块的功能及工作过程,并对该控制器IP核的接口信号进行了详细描述与定义,最后在 Xilinx ISE和ModelSim SE平台下对该控制器IP核进行了综合和功能仿真。
同步串行通信在航天工程领域中有着广泛的应用,其中,三线制同步串行通信以其连线少、操作方便、通信速度快等特点,被成功应用在与外围串行设备的数据通信中。
目前大多数 微控制器 或 微处理器 都配置有同步串行通信接口,但含有三线制同步串行通信接口的微控制器或微 处理器 却不多,因此在需要应用三线制进行通信的场合,就需要对系统进行三线制同步串行通信接口的扩展,利用 FPGA [2]可以实现三线制同步串行通信。由于FPGA具有工作速度高、可配置性强、灵活性好等突出优点,可以满足高速同步串行通信。根据三线制同步串行通信机制,通过采用Xilinx公司的FPGA器件[3]设计并实现了三线制同步串行通信控制器的IP软核。该控制器具有高速、易调试、配置灵活等优点,有效利用了FPGA内部硬件资源,减小了系统体积,缩短了系统开发周期。
1 三线制同步串行通信机制介绍
在计算机领域内,有串行传送和并行传送两种数据传送方式。并行数据传送中,数据在多条并行1 bit宽的传输线上同时由源端传送到目的端,这种传送方式也称为比特并行或字节串行。串行数据传送中,数据在单条1 bit宽的传输线上,逐位按顺序分时传送。
同步传输过程中,发送端和接收端必须使用共同的时钟源才能保证它们之间的准确同步。同步传输时,在帧同步脉冲信号触发下,串行数据信息以连续的形式发送,每个时钟周期发送1 bit数据。因此,同步传输时数据成批连续发送,信息字符间不留任何空隙,它严格按照约定的速率发送和接收。为达到接收和发送的准确同步,通常在发送端利用 编码器 把要发送的数据和发送时钟组合在一起,通过传输线发送到接收端,在接收端再用 解码器 从数据流中分离出接收时钟。常用的编码解码器有曼彻斯*和NRZ-L码。
三线制同步串行通信采用的码型为NRZ-L码,其时序逻辑关系如图1所示。
图1三线制同步串行通信逻辑关系图
三线制同步信号包括:帧同步信号、时钟信号和串行数据,通常采用中断方式接收。串行数据接收或发送时,首先帧同步信号先触发一个瞬时脉冲,之后保持低电平有效,数据在时钟信号的上升沿保持稳定,并开始采样,每个时钟周期接收或者发送一位串行数据,直至数据接收或者发送完毕,系统再转而处理其他相关操作。在数据发送或接收的整个过程中,帧同步信号一直处于低电平不变。
2 三线制同步串行通信控制器IP核设计
本设计最终目标是用硬件描述语言VHDL[4]构建一个三线制同步串行通信控制器,也就是建立一个基于FPGA实现的、可复用的IP核[5]。同时,可以将设计好的IP核保存,作为一个子模块应用于其他需要此模块的系统中,从而减轻大型设计的工作量,缩短开发周期。
2.1 三线制同步串行通信控制器IP核接口描述
本设计最终实现的目标是生成如图2所示的IP核接口封装。
图2 三线制同步串行通信控制器IP 核接口封装图
其中,三线制同步串行通信控制器IP核接口信号定义如表1所示。该IP核共有全局信号管脚8个,接收接口信号管脚和发送接口信号管脚各3个。
表1三线制同步串行通信控制器IP核接口信号描述
2.2 三线制同步串行通信控制器IP核 电路 结构设计
按照设计目标,根据需要实现的功能,可将三线制同步串行通信控制器结构划分成几个大的功能模块,这些模块独自完成一定的任务,结合起来实现通信控制器的整体功能。同时,划分模块功能后,可以更方便地用硬件描述语言VHDL对其进行描述。
如图3所示,根据设计要求,可将三线制同步串行通信控制器划分成3个主要功能模块:接口模块、 接收模块 和发送模块。
图3 三线制同步串行通信控制器结构图
(1)接口模块:用于各种全局信号的逻辑组合译码控制。同时,对输入的系统时钟进行时钟分频,为接收模块和发送模块提供串行同步时钟信号。
(2)接收模块:用于接收外围串行设备传来的串行数据,此功能模块的核心是接收FIFO和串/并变换两大模块,其中接收FIFO作为数据 缓冲器 暂存接收到的数据。在接收数据标志、接收移位寄存器和接收移位 计数器 的配合驱动下,串行数据按照MSB先、LSB后的顺序经过串/并变换后,并行数据被存储于接收FIFO中,等待中断响应后 CPU 对数据进行处理。
(3)发送模块:用于向外围串行设备发送串行数据,此功能模块的核心是发送FIFO和并/串变换两大模块。CPU将要发送的数据先放到系统的并行数据 总线 上,并被暂存于发送FIFO中,在响应发送中断信号后,并行数据按照MSB首发、LSB后发的顺序,在控制信号驱动下,经过并/串变换,发送的数据最终以串行数据格式被送往外围串行设备端口。
三线制同步串行通信控制器IP核实体名接口用VHDL语言定义如下:
ENTITY SerSendRec IS
PORT ( Rst_n:IN STD_LOGIC;
Clk:IN STD_LOGIC;
Cs:IN STD_LOGIC;
Strobe:IN STD_LOGIC;
Rw:IN STD_LOGIC;
Addr:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Rdata:IN STD_LOGIC;
Rclk:OUT STD_LOGIC;
Rgate:OUT STD_LOGIC;
Int:OUT STD_LOGIC;
Sdata:OUT STD_LOGIC;
Sclk:OUT STD_LOGIC;
Sgate:OUT STD_LOGIC;
Data:INOUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END SerSendRec;
3 仿真与验证
利用Xilinx ISE和ModelSim SE 工具 平台对三线制同步串行通信控制器IP核进行综合和功能仿真。数据发送仿真波形如图4所示,数据接收仿真波形如图5所示。可以看出,仿真结果完全正确,符合设计的预定目标。
图4 数据发送仿真波形
图5 数据接收仿真波形
从图4的仿真波形中可以看到,data 信号线 上是系统要向外围串行设备发送的并行数据,在各种控制信号逻辑组合满足情况下,系统响应发送中断信号Int后,CPU先将待发送的数据暂存在04H地址缓冲寄存器中,在帧同步脉冲信号Sgate正脉冲触发下,每个Sclk周期发送一位串行数据Sdata。图中并行数据99H和E3H对应的串行数据分别为“10011001”和“11100011”。
同理,从图5可知,当开始接收数据时,在Rgate正脉冲触发下,Rdata数据信号线上待接收的二进制串行数据通过串/并变换成“ 11101010 ”和“11010111”,并分别暂存在07H和06H所对应的地址缓冲寄存器中,在接收中断信号Int响应下,将对应的并行数据“EA”和“D7”传送到系统数据总线上,CPU对数据进行处理。
本文在对三线制同步串行通信机制进行介绍的基础上,对三线制同步串行通信控制器IP核进行了结构划分和详细设计,并结合Xilinx公司的FPGA器件,采用VHDL硬件描述语言,对设计方案进行了仿真与验证,通过功能仿真波形得出了设计方案的正确性,并被成功用于航天某工程项目中。因其兼具较高的数据传输率和IP核的可移植性,可以预见,其在通信领域中将具有更加广阔的发展空间。