一种简易的总线传输协议

2014-05-15 00:29付长英刘林海沈贵元常迎辉
无线电通信技术 2014年1期
关键词:传输线寄存器字节

付长英,刘林海,沈贵元,常迎辉

(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)

0 引言

当前,SoC设计已经成为数字集成电路(Integrated Circuit,IC)设计的主流。一款SoC设计至少包含一颗微处理器核心,同时也包含不同类型、数量的外设接口模块,以及用户定制的逻辑电路。随着SoC的规模不断扩大,集成的IP模块不断增多,复杂度不断加大,使得各个模块之间通信的问题越来越突出。在片上系统领域中,主机与从机之间的通信需要考虑的因素很多,例如总线位宽、速率、实现难易程度等。因此,设计一种简单易用的高速率传输总线是SoC设计初期着重考虑的。

1 三总线传输协议介绍

该总线传输协议是为了实现主机与从机之间的高速寄存器读写操作,由3根信号线组成,分别是片选使能线、时钟传输线、双向数据传输线。片选使能线与双向数据传输线复位之后默认的状态为高电平,时钟传输线复位之后默认的状态为低电平。

1.1 总线传输数据的步骤

该传输总线传输时,由主机首先拉低片选使能线;从机检测到片选使能线为低之后,内部产生启动信号。主机拉低片选使能线之后,产生总线时钟,并通过时钟传输线将时钟传输给从机;总线时钟可以为主机内部高频时钟的分频时钟,分频比可为任意值。主机通过数据传输线发送数据,数据可以为多个字节;首先发送当前字节的高位,由高位到低位依次发送,双向数据传输线的变化位于时钟的下降沿。从机在总线时钟的上升沿开始对数据进行采样,并按照收取到的数据进行读写操作。主机传输数据完毕之后,停止总线时钟才产生,拉高片选使能线,结束该次传输。

当主机发送数据与产生时钟时,主机每次发起的数据传输,总是以固定数值的传输时钟周期为一组,当从机接收到的时钟周期不足一组时,舍弃最后传输的数据,数据传输完毕时,最少包含两组固定数值的传输时钟周期。

如图1是三总线传输协议的概略图,片选使能线为100,时钟传输线为200,双向数据传输线为300,传输首字节为310,第2个字节为320,第3个字节为330。首字节中起始位为读写使能311,后续数据位为起始地址312。

图1 三总线传输协议概略图

主机产生的分频时钟,分频比包括1分频,即传输时钟与主机内部时钟同频,最高可以达到电路接口频率的最高值。

1.2 三总线传输协议的优点

该总线传输协议与其他总线相比,具有如下优点:①总线位宽只有3位,通过双向数据传输线满足读写的不同方向要求;②总线传输时钟可以与主机内部时钟同频,传输速度较高;③根据总线传输协议中的要求,可以只发送一次起始地址,之后的读写操作均在此起始地址基础上累加;④该总线传输协议比较简单,易于理解,可操作性强,可以根据具体寄存器位宽进行字节位宽的调整。

2 三总线传输协议的读写操作

2.1 主机写从机操作

主机通过数据传输线发送数据,当主机需要对从机进行写操作时,首先需要发送的首字节为“写使能1”加“从机起始地址”,第2个字节为需要写入“从机起始地址”的数据,第3个字节为需要写入“从机起始地址+1”的数据,以此类推,第N个字节为需要写入“从机起始地址+N-2”的数据。其中,N为字节的个数。

图2是三总线传输协议主机写从机的流程图。图中片选使能线为100,双向数据传输线为300.首字节为310,第2个传输字节320为写入起始地址的数据,第3个传输字节330为写入起始地址加一的数据,第3个传输字节340为写入起始地址加二的数据,第N个传输字节350为写入起始地址+(N-2)数据。首字节高位为写使能311,首字节低位为起始地址312。

图2 主机写从机流程图

2.2 主机读从机操作

当主机需要对从机进行读操作时,首先需要发送的首字节为“读使能0”加“从机起始地址”,之后主机将双向数据传输线交予从机进行控制,主机只需要产生传输时钟,从机由该传输时钟进行数据的发出;当主机发出读取的命令之后,由于从机接收到命令之后需要解析出指令时间,需要延时一个字节时间,在第3个字节时间将“从机起始地址”的数据传输给主机,第4个字节时间将“从机起始地址+1”的数据传输给主机,以此类推,第N个字节时,主机由双向数据传输线读取到的为“从机起始地址+N-3”的数据;其中,一个字节时间为固定数值的传输时钟。

图3是本设计的三总线传输协议主机读从机寄存器状态流程图。图中片选使能线为100,双向数据传输线为300。首字节为310,第2个传输字节320为空闲周期,第3个传输字节330为起始读地址的寄存器状态值,第4个传输字节340为起始读地址加1的寄存器状态值,第N个传输字节350为起始读地址+(N-3)的寄存器状态值。首字节高位为读使能311,首字节低七位为起始读地址312。第2个传输字节320为用于主机、从机之间的双向数据传输线的传输方向转变。

图3 主机读从机流程图

2.3 从机解析主机写操作

图4是设计的三总线传输从机解析主机写操作的原理图。空闲状态为A,主机将片选拉低为A1,从机进行数据采样为B,主从传输的首字节为C,首字节高位判断器为C1,打开写使能操作为D,从机进行时钟上升沿采样操作为E,片选为高判断器为E1,字节收取完成判断器为E2,写入当前加一地址操作为E3。

图4 从机解析主机写操作原理图

2.4 从机解析主机读操作

图5是设计的三总线传输协议从机解析主机读操作的原理图。空闲状态为A,片选拉低为A1,从机进行数据采样为B,主从传输的首字节为C,首字节高位判断其为C1,打开读使能操作为G,等待一个字节时间为H,片选为高判断器为H1,发送当前加一地址的寄存器状态操作为I。

图5 从机解析主机读操作原理图

3 总线模块设计及RTL实现

本文涉及的总线是通信处理芯片的MCU接口,主要功能是接收MCU的控制和发送芯片的告警,MCU的总线作为主设备,通信处理芯片的总线接口作为从设备。根据功能需求,设计简化了总线的完整协议,仅实现了从模式。采用VHDL语言实现,用Modelsim对总线的读写操作进行了仿真验证。

总线接口信号定义如图6所示。rst_125信号是外部提供的硬件复位信号,低电平复位有效;CSN为总线访问使能信号,低电平有效;SCLK为总线访问输入串行时钟;MOSI为总线访问输入串行数据;MISO为总线访问输出串行数据;wr_addr[7:0]信号是通过总线接口操作内部寄存器的地址信息,wr_data[7:0]信号为外部MCU通过总线访问寄存器读出的数据,随地址wr_addr[7:0]的变化而变化;rd_data[7:0]信号为外部MCU通过总线接口写入寄存器的数据,wd_reg为写使能,wd_reg信号为高时,在SCLK的上升沿把rd_data[7:0]数据写入到wr_addr[7:0]的地址中;rd_reg为读使能信号,wd_reg为写使能信号。

图6 总线顶层模块接口定义

在CSN为低时,判断时钟的上升沿,8个上升沿对输入的数据进行采样;第一个沿采到的数据指示的是读(1)/写(0),之后的7个数组合成为当前地址;如果是写,就写入当前地址;继续接收就写入下一地址;如果是读,就读出当前地址数据,继续就可以读出后一地址数据;通过总线传输的数据,从高位先发,存入接收寄存器r_shift[7:0];发送的时候,也是先发高位,通过发送寄存器t_shift[7:0]发送。

用VHDL语言编写testbench对总线模块进行测试,部分测试代码如下:

procedure spi_tr(

shift:in std_logic_vector(7downto 0);

signal rdata:out std_logic_vector(7downto 0);

signal SCLK:out std_logic;

signal MOSI:out std_logic;

signal MISO:in std_logic

)is

begin

rdata<=x"00";

SCLK<=‘1’;

MOSI<=‘1’;

wait for30 ns;

SCLK<=‘0’;—第1个数据

wait for30 ns;

MOSI<=shift(7);

rdata(7)<=MISO;

……

SCLK<=‘0’;—第8个数据

rdata(0)<=MISO;

wait for30 ns;

SCLK<=‘1’;

wait for30 ns;

MOSI<=‘1’;

wait for30 ns;

end spi_tr;

仿真测试部分结果如图7所示。

图7 总线读写操作仿真验证结果

4 结束语

设计的传输协议只有3根总线,采用VHDL语言实现硬件电路,并通过Modelsim验证了协议的正确性。读写过程简单明了,易于理解,针对不同位宽的寄存器,可以根据位宽和地址深度的要求定制从机对首字节的解析模块,以满足各自设计的特定需求,非常适合芯片之间的通信。

[1]张斌,刘宇,荣金峰.通用型SPI总线的IP设计与实现[J].中国集成电路,2011,7(146):43-46.

[2]周强.超大规模集成电路设计导论[M].北京:清华大学出版社,2005.

[3]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安电子科技大学出版社,1999.

[4]王珏文,金伟信,蔡一兵,等.基于FPGA的SPI总线接口的实现[J].总线与网络,2010,14(325):102-104.

[5]王二萍.高速可复用SPI总线的设计与VerilogHDL实现[D].郑州:河南大学,2007:70-77.

[6]赵杰.基于AMBA总线的SPI协议IP核的实现与验证[D].中国科技大学,2009:22-25.

[7]高如云,陆曼茹,张企民.通信电子线路[M].西安:西安电子科技大学出版社,2008.

[8]荣蓉.基于SOC嵌入式片上系统应用研究[J].煤炭技术,2012,31(6):218-219.

[9]刘林海.AHB总线分析及从模块设计[J].无线电通信技术,2007,33(3):35-38.

[10]朱宏光,司静.一种用于高速数据采集的SDRAM控制器[J].无线电工程,2010,40(4):62-64.

猜你喜欢
传输线寄存器字节
STM32和51单片机寄存器映射原理异同分析
No.8 字节跳动将推出独立出口电商APP
多导体传输线串扰概率分布计算方法
Lite寄存器模型的设计与实现
基于ADS的传输线时域分析实验
No.10 “字节跳动手机”要来了?
移位寄存器及算术运算应用
简谈MC7字节码
略谈λ/4传输线的实际应用
Lx5280模拟器移植设计及实施