基于AXI总线的可配置LVDS控制器设计与验证鄢
蒙宇霆,袁海英,丁冬
(北京工业大学信息学部微电子学院,北京100124)
摘要:针对不同应用场景下LVDS通信协议体现在数据位宽、帧格式和存储方式的选择差异性和数据收发灵活性,提出一种基于AXI总线的可配置LVDS控制器设计与验证方案。为了实现对LVDS控制器的精确控制,增加基于APB接口的可配置寄存器模块,在SoC系统上由软件控制数据传输,有效提高了数据收发的灵活性;为了提高传输效率并广泛适应场景需求,将与内存交互的接口定义为AXI协议接口;为了避免传输数据错误和数据包丢失等现象,在自定义协议中加入奇偶校验功能并在电路中加入数据包检查机制遥随后,采用高效的回环验证方案针对LVDS控制器进行功能测试遥实验结果表明该LVDS控制器基于AXI接口准确高效地实现了对端设备之间的数据收发功能,这种可配置的数据传输电路设计和验证方案灵活可行,便于广泛应用到视频图像数据传输系统中。
关键词:AXI总线;LVDS控制器;高速接口;可配置模块;数据收发
中图分类号:TN919.3文献标识码:A DOI:10.16157/j.issn.0258-7998.201211
中文引用格式:蒙宇霆,袁海英,丁冬.基于AXI总线的可配置LVDS控制器设计与验证[J].电子技术应用,
2021,47(6):40-4556.
英文弓I用格式:Meng Y uting,Yuan Haiying,Ding Dong.Design and verification of a configurable LVDS controller based on AXI bus[J].Application of Electronic Technique,2021,47(6):40-45,56.
Design and verification of a configurable LVDS controller based on AXI bus
Meng Yuting,Yuan Haiying,Ding Dong
(School of Microelectronics,Faculty of Information Technology,Beijing University of Technology,Beijing100124,China) Abstract:In view of the differences of data bit width,frame format and storage mode and flexibility of data transmission in differ­
ent application scenarios,a configurable LVDS controller based on AXI bus was proposed.In order to achieve precise control of LVDS controller,a configurable register module based on APB interface w as added,and data transmission was controlled by soft­ware on the SoC system,which effectively improved the flexibility of data transmission and reception.In order to improve the trans­mission efficiency and widely adapt to the scenario requirements,the interface that interacts with the memory is defined as the in­terface of the AXI protocol.In order to avoid data transmission errors and packet lo
ss,a parity function was added to the custom protocol and the packet checking mechanism was added to the circuit.Then,an efficient loopback verification scheme was used to perform functional tests on the LVDS controller.The experimental results show that the LVDS controller based on AXI interface can accurately and efficiently realize the data transmission and reception function between the peer devices.This configurable data trans­mission circuit design and verification scheme is flexible and feasible,so that it can be widely used in video image data transmission. Key words:AXI bus;LVDS controller;high-speed interface;configurable module;data transceiver
0引言
复杂电子系统设计对数据传输速率的要求日益严格,也带来高功耗、高成本等问题,低压差分信号(LVDS)[1]是一种高性能数据传输技术它是速度、成本和功耗之间的最佳折中方案遥在物理层电路设计方面,LVDS的低压摆幅(250mV-450mV)和快速过渡时间可以使数据传输速率达到100Mb/s~3Gb/s,能够满足现代复杂系统设计中对数据传输的需求。此外,这种低压摆幅可以降
*基金项目:北京未来芯片高精尖创新中心研究基金(KYJJ2018009)低功耗消散,具备差分远距离传输[2]的优点遥在当今大量数据传输的诸多场景中,如芯片间的信息传输[3-4、视频图像处理[5-6]、光通信[7」和LCD面板[8]等,LVDS已成为最有前景的解决方案之一。在数字逻辑功能设计
方面,由于需求、协议和应用场景的差异[9-10],设计人员存在大量重复性的设计、调试工作。为提高系统开发效率,解决平台间的兼容性问题,通常在FPGA平台上实现LVDS 高速接口设计[11-13],文献[11]在FPGA上实现了LVDS总线控制器,解决了多节点高速通信的故障隔离问题;文献[12]实现了LVDS接口的收发单元设计,在收发通路
中加入数据与时钟对齐机制,提高了平台兼容性,并在FPGA上验证了方案。文献[14]通过FPGA设计了一种基于LVDS接口的高速并行数据传输系统,并应用于实际专用网络交换模块。在实际芯片工程中,考虑到当LVDS 控制器集成到SoC系统上时存在兼容性问题,软硬件间应有更高的操作灵活度,系统各模块间数据传输应高速稳定。因此,为了提高系统可靠性,降低成本,设计一种高灵活度、高性能的LVDS控制器具有很高的价值。
本文设计的控制器主要用于由摄像头采集而来的数据与内存的交互,更加关注逻辑功能的实现。基于APB总线的可配置通路可通过配置寄存器按照自定义协议传输数据,在数据读写方面选择AXI总线以提高数据传输速率,针对数据传输过程中常见的丢数等错误,在收发通路中加入了检查模块,实现了更加灵活准确的数据传输功能。
1LVDS控制器设计方案
1.1LVDS控制器总体结构
基于AXI总线的LVDS控制器总体结构设计如图1所示该控制器的数据流以及主要控制寄存器信号展示在图中。电路内部主要由Rx_decoder、Tx_assemble、Axi_ wr_ctrl、Axi_rd_ctrl、Configurable_reg等模块组成。为了在SoC系统中利用软件控制数据传输,加入了基于APB总线接口的可配置模块Configurable_reg,用于提供与CPU 交互的接口,可通过APB配置通路配置寄存器来控制LVDS模块收发数据帧。
为了灵活地控制数据传输,本文自定义了一种数据接收和发送的协议:数据是帧的形式传输,帧由命令包和数据包构成,如图2所示。命令包中包含了状态、响应类型、帧数以及包数等字段。在数据接收过程中,Con-figurable_reg模块的使能寄存器Reg_rx_en会控制是否接收数据遥若将Reg_rx_en配置为1,模块Rx_decoder将收到的第一个35位命令包进行解析,若Rx_decoder模块检测到FRAME_START状态,则开始接收数据。接下来收到数据包,为确保数据正确传输,35位数据包中带有两位奇偶校验位,最低位是1,表示此时接收的是数据包,最高32位是数据字段。最后收到带结束状态FRAME_ END的CMD命令包。相应地,数据发送使能由Config-urable_reg模块的寄存器Reg_tx_en控制,Tx_assemble模块则会将数据按照自定义的协议封装、打包、发送出去。
1.2数据接收控制逻辑
数据接收流程:LVDS控制器接收到对端设备的数据帧,由Rx_decoder模块进行解析后,将数据传输到
Axi_ wr_ctrl控制模块。考虑到这两个模块在数据传输过程中时钟域不一致,采用异步FIFO做跨时钟域处理遥Axi_
图1LVDS总体结构
34:1211:87:43:10
包数帧数响应类型状态0
(CMD)
命令包
34:32:10
数据位奇偶校验位1
(DATA)
数据包
图2数据传输格式
wr_ctrl模块将接收到的32位数据转化为64位数据,并通过Axi总线将其送到DDR中。数据发送通路中的主要功能模块介绍如下。
Rx_decoder模块的作用是解析对端设备传来的数据帧中的命令包,并检查数据包是否出错,它的控制
状态机如图3所示,分别有S_IDLE尧S_RECV尧S_CKER尧S_WAIT 和S_STOP五个状态。S_IDLE表示此时没有数据帧正在接收,可以接收新的数据帧。当收到CMD命令包的帧头开始信号。
图3Rx_decoder模块状态机
frame_start时,会从S_IDLE状态跳到S_RECV状态,此时开始接收数据。为了避免在接收过程中发生数据丢失或数据传输错误的现象,增加了S_WAIT和S_CKER两个状态。当Rx_fifo_full信号置1时,表示此时接收FIFO 是满状态,状态机从S_RECV跳转到S_WAIT,等待接收FIFO为空时再由S_WAIT跳回S_RECV继续接收数据。
当奇偶校验检查到数据不一致时,状态机会从S_RECV 状态跳转到S_CKER状态,在S_CKER状态意味着数据传输发生错误需要等待重新开始的信号如果此时收到了frame_start信号,表示要接收新的数据帧,因此状态机从S_CKER跳转到S_RECV。每进来一个数据包都会进行奇偶校验检查,检查正确则会继续传入剩余的数据包,直到收到CMD命令包的帧尾结束信号frame_end,状态机从S_RECV状态跳转到S_IDLE状态,表示完成了这一帧数据的接收。CPU中断是最高优先级,不论在空闲状态S_IDLE还是S_RECV数据接收状态当Rx_en寄存器为0时,会直接从S_IDLE状态或S_RECV状态跳到S_STOP状态。
Axi_wr_ctrl模块用来控制从Rx_decoder模块接收的数据通过AXI写通道写到DDR,其控制状态机如图4
所示,包括S_IDLE尧S_WORK和S_CLER三个状态。状态
图4Axi_wr_ctrl模块状态机
机是否工作取决于rx2axi_start和work_done两个信号,这两个信号是Rx_decoder模块检测到开始标志和结束标志时传到Axi_wr_ctrl模块的控制信号。当rx2axi_start 置1时,由S_IDLE状态跳转到S_WORK状态,S_WORK 状态下会将进来的32位数据整合为64位数据并送到AXI写通道,按照AXI协议控制数据写到DDR中。如果 AXI写回应通道发生错误响应,clear信号会置1,状态机由S_WORK状态跳转到S_CKER状态在S_CKER状态下会将此时FIFO里的数据全部清除,清除完毕后跳转到S_IDLE状态,等待rx2axi_start置1时重新开始传输。此外,为了更加灵活地配置AXI的功能,在Axi_wr_ctrl模块中加了两个可配置寄存器用于改变AXI通道中每次突发传输数据的个数和写入DDR的起始地址。
1.3数据发送控制逻辑
数据发送流程:Axi_rd_ctrl模块接收到来自DDR controller的数据流后,开始进行数据位宽转换,经过异步FIFO的跨时钟域处理,送到TX_assemble模块将数据进行打包,再发送到对端设备。数据发送通路中的主要功能模块介绍如下。
Tx_assemble模块的功能由状态机控制,如图5所示,分别有S_IDLE尧S_SEND尧S_ERRO尧S_CLE
R和S_WAIT这5个状态。S_IDLE表示此时没有数据帧正在发送,当CPU要发送数据的时候,会配置Tx_en寄存器为1,从S_IDLE状态跳转到S_SEND状态。同时,Tx_assemble模块会生成控制信号并通过握手协议发送到Axi_rd_ctrl模块。S_SEND状态表示即将发送数据。根据自定义协议,每个35位的命令包中包含要发送的帧数、包数、响应类型和状态信息,Tx_assemble模块会用计数器来统计发送的帧数、包数及状态信息,然后将这些信息打包。每个35位数据包中包含32位数据、2位奇偶校验位及1位说明位(指明是数据还是命令)。最后Tx_assemble模块将命令包和数据包合并为数据帧由状态机控制发送。
Axi_rd_ctrl模块接收来自Tx_assemble模块的命令并把当前状态信息返回Tx_assemble模块。若Tx_assemble
模块开始发送数据的同时向Axi_rd_ctrl 模块发送读控制
信号,那么Axi_rd_ctrl 模块将会通过AXI 读通道从DDR
读出数据并写入读FIFO 中遥为了灵活配置,Axi_rd_ctrl
模块也包含了可配置寄存器来设置axi 起始的读地址和 突发式读写的数据数量。
2 LVDS 控制器仿真验证
为验证本文提出的LVDS 控制器设计方案,搭建如
图6所示的测试平台,利用Synopsys 公司的仿真软件 VCS 和Verdi 进行功能仿真验证。测试平台的主要功能 包括:提供与LVDS 控制器进行数据交互的BRAM (模块 级验证用BRAM 代替DDR);为验证APB 总线配置寄存
器功能,根据APB 总线协议生成可配置环境;根据自定
义的LVDS 控制器收发协议,在测试平台内生成完整的 数据帧,包括数据包和命令包等;将所有测试平台所需 的环境以及待测的LVDS 控制器集成,构建完整的验证 环境。
为了简化复杂的验证过程,考虑到LVDS 控制器特 有的收发通路,提出了一个高效的验证方案:在验证平
图5 TX_assemble 模块状态机
图6 LVDS 控制器的测试平台
台上根据自定义协议配置环境 向 LVDS  控制器发送完
整的数据帧,数据由LVDS 控制器的接收通路收到之后 通过AXI 接口写入BRAM ,此时再利用验证平台的APB
环境通过配置寄存器将存到BRAM 里 的数据帧读出,由发送通路发送回验证
平台,验证平台将发送出去的数据帧和 收到的数据帧进行比对,最后给出验证 结果。根据上述验证方案,将验证流程 分为以下三部分:
(1) 验证LVDS 控制器配置通路
通过APB 总线接口完成初始配置,设置收发数据包数量、AXI 总线突发式 读写的数据数量和DDR 的基地址。仿真 波形如图7所示,APB 通道分别对6个 地址进行读写,对应下面6组寄存器改
变为相应的值,表明APB 配置通路功能
正确,能按照标准APB 协议对可配置寄 存器进行读写操作。
(2) 验证 LVDS  控制器接收通路
完成APB 配置通路的初始化后,将验证平台生成的数据帧按照自定义协
APB 读
F
nrnnir 皿邛i mnMirMHniCTifiiiii 训n njinniniinii 血则涮唧 1門 g fwi  刑训曲咽「M 训阿fwn 「
1 ~1
I
I
nLrnjmrnj-i _______________
L_ “LT
rU~LrLn-TLT
啤丄士[35;词
」"dr 曲/e 刃甜邃2*1
l_0M®
■51
am
图7 APB 配置通路波形
1
a  400
W
a
议由lvds_rx_data 输入端口发送到LVDS 控制器,发送数
据帧前先通过配置通路配置lvds_rx_enable 寄存器,将接 收通路的使能信号打开,其仿真波形如图8所示。APB  总线地址0x10的第一位写入1之后,lvds_rx_enable 信号
被拉高,这意味着接收通路将要接收数据。随后,lvds_rx_
data 输入端口收到数据帧的帧头,即图9中lvds_rx_pdata
信号的0x102 ,根据之前命令包的定义,0x102表示发送 的帧数为一帧,此包类型为开始状态。接收到开始命令
包后,等待10个周期再开始接收128个数据包。数据 包接收完之后紧接着接收到帧尾命令包,即图10中
lvds_rx_pdata 信号的0x104。接收过程中,接收通路的
Rx_decoder 模块会控制异步FIFO 和Axi_wr_ctrl 模块将 128个32位数据合并为64个64位数据写到BRAM 中遥
图11显示,接收到的数据通过AXI 写通道全部写入
decoder
BRAM 里,说明接收通路功能实现正确。
(3)验证LVDS 控制器发送通路
根据所述验证方案,首先通过配置通路配置lvds_tx_en
寄存器将发送通路的使能信号打开,仿真波形如图12所
示。APB 总线地址0x00的第一位写入1之后,lvds_tx_en  信号被拉高 这意味着发送通路将要发送数据。 随后
Tx_assemble 模块发送控制信号控制Axi_rd_ctrl 模块和异
步FIFO  , Axi_rd_ctrl 模块先将64个64位数据转化为
128个32位数据,再经过异步FIFO 发送到Tx_assemble
模块中,最后,Tx_assemble 模块将接收到的数据打包 发回验证平台。图13显示,Axi_rd_ctrl 模块通过AXI 读 通道将BRAM 中的数据读出。由图14和图15可见,
<
Bpb.WHilJd-
图8配置lvds_rx_enable 寄存器波形图
i uumrLfiJiRrLrLnjTrinrLrLrLnnrLnjirLrLnjirLrmnjiLrirLrLrLnrLnjirLnnrL
i 11
1 1
1
11~LJ~1
i
1 -
IQ
IS
[
1*
3
3M
I
23
1
r
-Nir 礼|* .
JidTJ-f-rrt.'
I 用
H
iFdi.ir
* ■> l  Lr _L_r _i_rn_r _L_r~L_r _L_ri_r _L_rn_r~L_r~L_r~L_r~i_r _i_ri_—l _t ~u
图9帧头波形
n
1
1_ -1
1 ~
_j -
_|-
~1 1 - i
i  |_
7B?0 03e7 ]
辭』3«l
J
型卩卿 F
J
1(»4
1
3
I
1
e
I _
BOOC.OMC  fOe.OOTb  ]
file  iW7d
1
Pfe..®7e
I
]
图10帧尾波形
图11写入BRAM 的数据波形
iph_nL_n
他94:
a (pb_iiri=<
—1 um 『irL 「L 「uuL 「Lf 讥nMnrmnnnnrLrL 「Lim 「L 「Lnjinn 」iwL 『LfiJS 」i 」*LrL 「LJLnnMnjmMnn 「u
图12配置lvds_tx_en 寄存器波形图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。