APP下载

超高频RFID系统阅读器SOC设计

2018-11-22王铭铭

计算机技术与发展 2018年11期
关键词:基带阅读器寄存器

王铭铭,卜 刚,张 龑

(南京航空航天大学,江苏 南京 211106)

0 引 言

射频识别技术(radio frequency identification,RFID)是一种利用射频无线通信实现的非接触的无线识别技术。伴随着物联网技术的迅速发展,基于ISO/IEC18000-6C协议[1]的超高频(UHF)RFID阅读器的研究,已经成为该领域的重点和热点。随着集成电路的迅速发展,SOC(system on chip)设计方法的应用也越来越广泛。

一个SOC系统包括硬件模块和软件模块[2-3]。对于SOC设计而言,其中一个最重要的方面就是软硬件的协同设计。但是国内大多数的研究主要在软件领域和硬件领域,针对协同仿真领域的研究较少。随着SOC开发技术的发展,降低功耗、尺寸等关键因素,加快产品的研发周期,降低研发成本,逐渐成为集成电路设计的重要方向之一。

针对基于MC8051软核的片上系统开发,文中采取软硬件协同设计,划分系统模块,分成软件和硬件进行设计,应用MC8051处理器,进行软件开发并设计完成其基带通信链路模块,搭建整个系统并进行仿真验证。

1 MC8051简介

MC8051是Oregano Systems公司发布的一款8位微处理器,与标准的MCS-51指令集完全兼容。它是一款比较经典的8051微处理器[4],对比多款8051软核,考虑到了VHDL语言的严谨性以及MC8051处理器稳定可靠的性能,又支持开源WISHBONE总线协议,故采用MC8051处理器。

MC8051具备很多优势,用户可以根据工程需要和实际需求,增加或者减少一些功能,通过修改其源代码来优化参数,以适配目标系统。除了内部ROM和外部RAM可以根据工程要求及用户需求作一定的扩展之外,串行模块、定时器/计数器模块、外部中断模块等均可进行一定的扩展。由于暂时未涉及到其他复杂的应用场景,文中仅使用默认设置。

2 SOC系统搭建

对于搭建的阅读器SOC系统,主要包括两大部分,一部分是MC8051处理器,实现软件开发、控制处理等功能,另一部分是基带收发链路,主要用来传输符合规范的数据包以及数据传输速率等内容。系统实现如图1所示。

图1 阅读器SOC系统结构

将MC8051处理器与自定义基带通信链路模块进行互连时,基本思路是通过总线方式,将自定义基带通信链路模块接口与WISHBONE总线[5]接口互连,将WISHBONE总线接口直接与MC8051处理器外部RAM接口互连,在逻辑上将基带通信链路模块作为处理器的外部RAM[6-7]。在软件程序编写时,与基带通信链路模块的数据交互亦类似与对外部RAM的读写操作。

2.1 MC8051软核的修改

Oregano Systems公司官网下载的MC8051软核需经过一定的修改[8],才能用于本系统阅读器及基带的SOC设计。在mc8051_p包文件中作相应修改,删除原有mc8051_ramx模块声明,保留mc8051_rom模块声明,增加wb_reader_soc、reader_top模块声明。

值得注意的是,在增加上述模块声明后,需在工程中增加上述模块对应的RTL文件。另外需要修改mc8051_rom及mc8051_t_rom文件,使其能正确读取.dua文件以初始化ROM。

entity mc8051_rom

generic(c_init_file:string:=“mc8051_rom.dua”);

port( clk :instd_logic; --clock signal

reset :instd_logic; --reset signal

rom_data_o :instd_logic_vector(15 downto 0); --data output

rom_data_i :instd_logic_vector(15 downto 0)); --adress

end mc8051_rom

上述代码中加粗部分为修改部分,系统应初始化ROM。因此,阅读器ROM读取文件名为mc8051_rom.dua,同时,也需要修改对应的结构体以及配置文件。

修改mc8051_top文件,在原有的mc8051_top顶层模块中增加两个信号tx_data以及data_rx,并删除int0_i信号,由于基带通信链路中断信号int_bb直接与MC8051处理器int0_i信号互连,因此在顶层模块信号列表中删除这两个信号。

2.2 对应接口设置

将基带通信链路模块作为RAMX模块与MC8051 RAMX接口通过WISHBOEN总线互连,如图1所示。需要在原来的MC8051顶层模块基础上额外增加三个接口信号:tx_end、data_rx、int_bb,分别表示基带串行信号输出、输入和基带中断信号输出。

另外,寄存器定义是程序设计中非常重要的部分,用以实现控制、存储等功能,在阅读器系统中设置了若干组特殊功能寄存器,位于基带通信链路模块数字接口部分,各寄存器详情如表1所示。

表1 数字接口寄存器定义

其中,CONTROL寄存器用于控制基带通信链路发送与接收的控制;TX_BUF寄存器共有128位,保存MC8051需要发送的数据,数据保存采用小端对齐方式,包含命令以及数据信息,在进行操作时,地址从0x01至0x10,每8位数据一组,以字节为单位;RX_BUF寄存器共有128位,保存基带接收链路发送过来的数据,数据保存采用小端对齐方式,包含命令以及数据信息,与TX_BUF类似,在进行操作时,地址从0x11至0x20,其中0x11地址的字节保存该条命令信息的长度信息,以位计算;STATE寄存器用来保存基带中断信号,基带通信链路在链路数据发送完成后或链路数据接收完成后,都会产生中断信号,且更新该寄存器,同时会将中断信号发送至MC8051处理器,当MC8051响应中断后,会从该寄存器中读取中断状态,以做出应答。

3 软硬件的设计

由第二小节得知,修改后的MC8051软核需要将所设计的阅读器的软件协议部分以及硬件通信基带链路实现均要设置顶层模块。

阅读器的系统软件实现主要是对协议ISO/IEC 18000-6C的标准实现[9],基带通信链路实现的主要是协议物理层规范,包含数据校验及编解码、数据包格式、数据传输速率等内容,最终以符合协议标准的数据格式将基带信号输入射频模块。

3.1 软件设计

阅读器软件算法的设计思路是根据协议标准,对标签进行发信,并对接收到的信息做出反馈,进而对标签进行读写等一系列访问操作。另外,阅读器与标签之间的通信需要满足协议规定的链路时序要求[10-11]。

在MC8051中,该时序要求采用内部定时器实现,当超过一定时间之后,内部定时器产生中断,阅读器进入新的执行过程而不再等待标签的应答。

由于阅读器与标签的通信是基于“半双工”的机制,双方是基于问答式的信息交互,即无法在接收的同时发送信息,发送链路或者接收链路同时只有一条链路在工作。因此,在软件算法设计时充分考虑到这一点。当基带通信链路模块数据发送完毕时或者数据接收完毕时均会产生外部中断,MC8051响应该中断后,会根据当前状态及时打开或者关闭阅读器基带通信链路的发送时钟或者接收时钟,调整阅读器工作状态,从一定程度上而言,也达到了阅读器基带通信链路低功耗的设计效果。

因此,系统共需设置两个中断向量,分别是外部中断INT0,以及内部链路时序定时器中断。当产生外部中断时,flag标志位置位;初始化外部中断时,flag标志位复位。当内部定时器产生中断时,TimingLink标志位置位;初始化内部定时器中断时,TimingLink标志位复位。

其中外部中断包含两个内容,其一为数据发送完成,其二为数据接收完成,两者均会引起INT0产生下降沿,以触发中断。当然,具体是发送还是接收完成,则由阅读器判断,它会读取基带通信链路模块数字接口中的外部中断状态寄存器STATE,以确定究竟是数据发送完成还是数据接送完成,并进入不同的处理过程。阅读器软件算法实现流程如图2所示。

图2 阅读器软件算法流程

3.2 硬件设计

阅读器基带通信链路模块负责实现硬件部分,基带收发链路模块设计方案是上行链路为发送链路,按照协议要求生成一定格式的串行码流,下行链路为接收链路,实现数据的串行接收[12-13]。模块通过数字接口与MC8051处理器进行通信,实现协议处理;通过串行I/O口TX及RX实现与外界信息的交互[14-15]。

阅读器数字基带发送链路具体设计如图3所示,图中显示了阅读器数字基带发送链路的顶层模块设计结构。阅读器的发送链路主要包括七个模块,分别为CLK模块、CNT_R模块、P2S模块、CRC_Gen[16]模块、异步FIFO模块、PIE_Encode模块[17]以及Preamble_R模块,其中CLK模块是把系统时钟进行分频,产生码率时钟以及PIE编码时钟。数据并行输入CNT_R模块,然后可以得出是否为Query命令的标志位query_flag;并行输入的命令或者数据转换为串行数据,将转换的数据进行CRC校验,生成校验码;由于校验、编码的时钟频率不同,所以采用异步FIFO模块,进行数据的缓存;对FIFO中缓存的数据进行PIE编码,在编码结束后,基于query_flag标志位选择同步码,最终串行输出,完成基带发送数据的处理。

阅读器数字基带接收链路具体设计如图4所示,图中显示了阅读器数字基带接收链路的顶层模块设计结构。阅读器接收链路主要由四个模块组成,分别为Head_Check_R模块、Decode模块、CRC16_Check模块和S2P模块。接收数据通过Head_Check_R模块检测同步码,然后对检测完同步码的数据进行FM0或Miller副载波调制编码信号的解码操作,完成解码后,对数据进行CRC解除校验,然后将串行命令或数据转为并行数据,供MC8051处理器调用,从而完成硬件部分的基带链路接收。

图3 阅读器数字基带发送链路

图4 阅读器数字基带接收链路

4 仿真验证

在系统包含的所有模块中,每个模块通过仿真验证,才能在整个系统中进行仿真,以确保每个模块的功能正确性以及系统仿真的可靠性。

系统的软件开发在Keil软件中进行,当完成编译之后,生成.hex格式文件,但该文件尚无法在软核上运行,需要通过hex2dua工具将其转换为.dua格式,并分别替换ROM文件。.dua文件中所保存的即为MC8051软核运行所需的机器码,在启动仿真时,MC8051会自动从中读取程序并执行[18]。

应用MC8051处理器的SOC系统进行软硬件协同验证,将验证过的基带链路与修改后的软核进行系统上的验证。如图5所示,系统通过软硬件验证,得到正确的发送编码。图中所示的十六进制的CA数据是发送数据成功的验证。

图5 阅读器SOC系统软硬件仿真验证

5 结束语

利用开源处理器MC8051软核,根据协议要求,设计阅读器软件算法,结合自定义基带通信链路模块,通过WISHBONE总线协议实现两者互连,搭建起系统硬件架构。验证软硬件协同,经过系统仿真,实现阅读器的编码发送操作,完成了系统软硬件的仿真验证。对于采用MC8051软核应用于SOC系统的方法,普遍适用于系统的设计,并可以根据实际需要结合处理器设计匹配整个系统。

猜你喜欢

基带阅读器寄存器
The Magna Carta
Lite寄存器模型的设计与实现
Winner Takes All
苹果推出自研基带芯片要过几道坎?
苹果10亿美元为5G买“芯”
常用电子测速法在某数字信号处理器中的应用*
移位寄存器及算术运算应用
LTE基带芯片规模超过总基带芯片出货量
亚马逊推出全新Kindle Paperwhite电子书阅读器