基于SystemC语言实现UHF RFID系统自顶向下设计
2021-05-29戚皖青李姝萱
戚皖青,卜 刚,李姝萱
(南京航空航天大学 电子信息工程学院,江苏 南京 211106)
0 引言
随着科技的发展,集成电路的规模变得庞大和复杂,电子系统设计(Electronic System Level,ESL)流程是目前最先进片上系统设计流程方法。
SystemC和Verilog/SystemC Verilog相互结合的方法学为越来越复杂的片上系统设计提供了一套从系统级(system)到RTL级设计的可行性方案。相比于传统的设计流程,首先采用高级语言来对系统进行设计,之后再采用硬件描述语言对寄存器传输级进行设计。应用以上的方法学,使得片上系统的设计过程变得简单和高效。
射频识别技术RFID的原理为阅读器(reader)与标签(tager)之间以进行非接触式的数据通信的方式来起到标签识别目标的作用。
UHF RFID的工作频率为860 MHz~960 MHz,而UHF RFID空中接口协议ISO/IEC18000-6C是相关标准化组织制定的最新版本[1]。
UHF RFID技术凭借其识别距离远、传输可靠且安全、数据传输速率高等优势,在业界得到广泛关注[2]。
1 电子系统设计(ESL)方法学
在整个的电子系统设计流程中,首先以电子系统级设计为起点,其中包括的项目分别是选择体系架构、制定产品规范以及虚拟软件执行平台的开发。电子系统设计流程的益处是硬件和软件能够并行开发,既继承已有逻辑设计模块,又为待设计的新逻辑模块提供详细的规格,并提供事物处理级的虚拟模型,为软件开发任务提供执行平台原型,而逻辑模块也可以基于此原型进行验证[3-5]。在完成电子系统级的设计之后,可以进行RTL的设计和验证工作,与此同时软件开发任务也可以同时进行。在上述设计流程中,可以采用高层次综合工具CatapultC或者Vivado HLS等产生的硬件模型进行RTL级的设计。在此过程中,CatapultC或者Vivado HLS可以直接将高层次设计综合成RTL级代码。
2 SystemC介绍
SystemC是以通过采用系统级设计的思想,在结合了软件算法和硬件实现的优势之后,对项目工程进行系统级设计,使得系统设计的效率和准确性得到有效提高。SystemC类库添加进C++之后,对系统级模型开发的实现提供了充分的代码设计基础,同时可以快速实现设计的仿真和验证[6-7]。
SystemC语言包括端口、信号、模块和进程等,而这些都是硬件描述语言应该具备的基本条件。同时由于特殊库函数对于时钟信号的描述,SystemC语言简化了对时钟信号的定义[8-9]。
3 系统模型以及标签不同层次的设计
3.1 系统模型
基于已有的设计理念,一个SoC系统的设计可以划分为硬件设计模块和软件设计模块。本文根据UHF RFID协议,针对物理层的数据传递以及标签识别层的信息交互,结合ESL软硬件协同设计的理念以及SoC的设计方法,设计了整个UHF RFID系统模型[10-11]。
基带通信链路设计模块则是实现物理层相关功能的实现,鉴于SystemC的自顶向下的设计优势,采用SystemC语言设计实现阅读器的识别层与标签的识别层的信息交互,以及阅读器和标签的之间的通信链路的设计。
3.2 标签的不同层次的设计
根据UHF RFID的协议标准,对于协议的设计可以分为物理层结构设计和标签识别层结构设计。在物理层结构的设计过程中,首先实现基带编码,生成符合UHF RFID的协议标准的数据包,并且规定数据包格式、数据校验及编解码方式、射频调制方法、射频包络参数设定、数据传输速率等问题;而主要处理阅读器与标签信息交互的各种命令,则是在标签识别层结构的设计中完成,以函数调用的方式实现命令传递,并且通过选择、盘存和访问来进行管理标签群。在协议标签识别层结构的设计中主要是处理UHF RFID协议的命令体系,标签相应的状态转化[12-13]。协议中不仅对规定的命令和规范做了介绍,还可以保证用户在预留的空间内,进行自定义相关命令和规范[14]。阅读器与标签之间的对应的基本管理操作如图1所示。
图1 阅读器与标签之间的基本管理操作
3.2.1 标签识别层设计
根据已有的UHF RFID的协议标准,标签识别层设计的思路首先是遵循阅读器的命令,标签调整到相应的状态,同时对阅读器作出应答。在两者通信过程中,阅读器处于主动地位,阅读器主要实现链路时序控制部分。在实现标签识别层的过程中,可以采用设计状态机的方式进行状态之间的转换,具体标签状态之间的转换图如图2所示。
图2 标签状态转换图
按照状态图的转换过程进行SystemC建模仿真,分别编写reader.cpp以及tag.cpp文件,在顶层文件里面进行例化和调用,标签识别层状态转换模型图如图3所示,实现标签的不同的状态之间的转换,标签识别层状态转换仿真图如图4所示。
图3 标签识别层状态转换模型图
图4 标签识别层状态转换仿真图
3.2.2 标签链路层设计
标签数字基带发送链路,主要实现的是标签发送信息,阅读器接收并处理。按照标准协议,标签的数字基带部分将处理器要发送的信息编码为特定的格式传输到射频端。同样在发送信息的过程中,处理器在数字基带模块的寄存器写进将要发送的数据,数字基带模块接收数据和使能信号后按照协议处理数据。发送链路需要产生标签反向散射频率、数据格式转化、生成CRC校验码、FIFO缓存、FM0编码和Miller编码、添加同步码等模型功能。鉴于以上的设计思路,标签的数字基带发送链路模型设计如图5所示。
图5 标签基带发送链路
阅读器数字基带发送链路将数据发送到射频端后,由射频模块发送出去,标签数字基带接收链路实现射频信号接收并处理。接收链路需要对接收到数据实现检测、PIE解码、校验、格式转化等操作[15]。
图6为标签基带链路ENCODE_T模块,在Microsoft Visual C++6.0中对数据“1001001001011001”进行fm0miller编码仿真之后,在Modelsim中查看的仿真波形图。
图6 标签基带链路ENCODE_T模块波形仿真图
4 高层次Vivado HLS综合
Vivado工具为Xilinx公司推出的一款设计套件,主要任务是针对于FPGA开发板的集成化一体式设计。Vivado工具包含了所有产品系列的开发环境,例如芯片级IP核、交叉编译工具等,开发人员的工作量得到极大的减少,项目开发效率也得到提升[16]。
Vivado HLS是一款高层次综合工具,可以将C、C++以及SystemC等高级语言综合成Verilog HDL(HardDescription Language)或VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)等语言,软件描述的系统模型综合成RTL(Register Transfer Level)级的代码。与此同时也大大降低了开发人员的开发设计难度,并且有效地缩短设计周期[17]。
Vivado HLS设计流程如图7所示,第一步设计具有预期功能的C测试平台和源代码。第二步使用C仿真器,例如Microsoft Visual C++6.0来验证程序实现的函数是否满足预期的要求。如果C仿真器仿真出的结果满足当初的设计要求,Vivado HLS工具可以将C生成的算法转换为相应的RTL级模块。具体Vivado HLS综合流程如图7所示。
图7 Vivado HLS综合流程图
根据程序对算法的编译生成的RTL_Schematic如图8所示。
图8 ENCODE_T模块Vivado HLS仿真图
5 结论
ESL设计方法学为规模越来越庞大的集成电路设计提供了有效设计思路和解决方法,具有建模层次高、仿真速度快等优点。采用高层次建模,对UHF RFID标准协议进行从识别层到链路层的设计。首先对识别层和链路层采用SystemC语言建模,并通过Microsoft Visual C++6.0中对数据“1001001001011001”进行fm0miller编码仿真之后,在Modelsim中查看的仿真波形,如图5所示,结果满足编码设计要求。完成SystemC设计之后将ENCODE_T模块导入到Vivado HLS中转换成RTL电路,实现从高层建模、逐步细化的工作要求。