具体实施方式
实施例1
本发明由税控盘硬件系统和税控盘软件系统组成。
如图1所示,税控盘硬件系统包括主控芯片U3以及与主控芯片U3相连接的时钟模块、电源模块、存储器、缓存器和USB接口保护器,其中,电源模块还与时钟模块相连接。硬件系统是构成税控盘的各种电子元器件,元器件通过电路的连接,在数字逻辑控制下形成一个功能上的整体。
如图2所示,主控制器U3的型号是SSX20,该芯片是中兴集成电路有限公司采用专门定制的国产32位高安全核Arca2sc,采用5级流水线和RISC结构,内部有128KB Flash用于存储程序、函数库,32KB EEPROM用于存储数据;安全组建包括1024位的公钥算法引擎、DES/3DES算法引擎和真随机数发生器;内部集成的接口资源有USB控制器、NANDFlash控制器、SPI和UART串口。主控芯片U3主要用来运行税控盘固件程序以及协调各模块的协同工作。
如图3所示,电源模块的主要功能是为整个系统提供稳定平滑的电源。芯片U1的型号为AMS1117-3.3,它是一个低压差稳压器,它将来自USB口的5V变换为3.3V给整个系统供电,由于该芯片有低压差特性,当USB的电压在5V到4.5V变化时AMS1117-3.3都能输出稳定的电压,不会影响税控盘的工作。
在正常情况下,本发明采用USB接口供电。但是当USB接口掉电后,本发明还可以增设备用电池和电池监测模块。如图7所示,税控盘在USB接口掉电后,备用电池和电池检测电路保证时钟模块U4的时钟正确走时和电池低于安全值的检测。备用电池采用一次性锂电池CR2032,电压3V,容量210mAh。当外部的USB接口掉电时,时钟模块U4内部的开关切换到备用电池,保证时钟继续准确走时。电池电压检测采用LM393比较器U5来实现,锂电池CR2032的放电门限为2.7V,3.3V的主电源经过电阻R7和R8分压后连接到比较器U5的同相端,锂电池CR2032经电阻R3隔离后接到比较器U5的反相端,电容C5起到低通滤波的效果;当电池电压高于2.7V时,比较器U5的1脚为低电平,当低于2.7V时比较器U5的1脚变为高电平。主控制器SSX20读取比较器1脚的电平信号就可以判断当前电池电压的状态。
如图4所示,USB接口保护器的功能是实现异常情况下端口保护和USB数据的传输。插座J1中的D+和D-是USB差分信号,SIH是屏蔽地信号。由于税控盘USB接口在和计算机插接过程中会产生瞬时的高压,如果不加安全处理会损坏计算机的USB口或主控制器的USB口。目前在税控盘的USB电路中增加了端口保护器U7,端口保护器U7的型号是NUF2042,它是一款安森美半导体的接口芯片,并且在其内部集成了瞬态抑制器TVS。当USB总线上出现瞬时高压时,TVS将瞬时的能量泄放到地回路,对其他的设备进行了有效的保护。其输出的D2i和D1i信号连接到主控芯片SSX20的USB差分信号USB_DM和USB_DP引脚。主控芯片SSX20内部集成了USB1.1的控制器,该接口实现了外部USB主机和税控盘之间数据传输。
如图5所示,本发明税控盘硬件系统中大容量存储器U6的功能是实现税控盘内发票明细数据存储的功能;它采用三星半导体公司的K9F1G08U0A芯片,是NandFlash结构的一种大容量存储介质,容量为128M。它有8个数据线、6个根信号线,和主控芯片SSX20连接实现对内部存储单元的读写操作。主控芯片SSX20内部集成了Flash存储控制器FCU,在读写外部Flash存储芯片时自动产生时序。IO0~IO7为数据和地址复用线,用来传送主控制器要访问单元的地址信息,还用来传输读写的数据。/CE为芯片的操作使能信号,/CE引脚为低电平时存储器才会接收外部的访问信号;CLE信号用来锁存总线传输的命令;ALE信号用来锁存总线传输的访问地址;/RE信号是主控制器产生的读使能信号,存储器将要读取的数据传送到总线上,实现读操作;/WE是主控制器产生的写使能信号,使能存储器内部的写时序,完成数据的存储;R/B信号是存储器输出的一个状态信号,主控制器通过读取该信号的状态来判断的内部的读写操作是否完成。这些信号按照指定的时序共同来完成大容量数据的读写操作。
如图6所示,高速缓存器实现主控芯片SSX20对大容量存储器写入数据时的高速缓存功能。由于NandFlash的擦写次数是有限的,频繁的擦写会缩短其使用的寿命,为了减少这种频繁的擦写操作,电路中增加了Ramtron半导体公司的铁电存储器FM25CL64。铁电存储器U2采用特殊的材料和工艺,使这种芯片具有读写速度快和数据掉电不丢失的特性。与EEPROM和Flash同样的非易失性存储器件相比,铁电存储器具有快速写入和高耐久性的特点。将税控盘的部分可能会被频繁修改的数据存储到铁电存储器U2中,增加EEROM和NANDFlash的使用寿命,增加数据存储的稳定性。操作接口为标准的串行总线SPI,有四个信号线和主控芯片SSX20相接,/CS为片选信号,当为低电平时才接收时钟和数据信号完成指定的操作,SI为串行输入信号,SO为串行输出信号,SCLK为串行时钟信号。由于主控制内部集成了SPI控制器,可以很方便实现对铁电存储器U2进行读写访问。当要写到大容量介质中数据不到一个页时,暂存到铁电中,超过一个页时才写大容量介质,减少了对大容量介质的擦写次数。铁电存储器的快速写入和高耐久特性提高了整个税控盘存储系统的使用寿命和工作的稳定性。
如图7所示,在本发明中,以时钟模块为加密时钟模块为最佳的实施方式,另外也可以采用普通的时钟模块。在本实施例中,时钟模块主要为税控盘提供准确的实时时钟,在发票开具时完成税控码的生成。它采用全双工的异步串行接口,有两个信号线和主控芯片SSX20相连,分别为串行数据发送TXD和串行数据接收RXD,波特率为9600,10位的数据格式,其中一个起始位,8个数据位,一个停止位。
如图8所示,税控盘软件系统包括与税控盘硬件系统相连接的硬件接口层、文件系统管理层、安全管理层、税务应用层以及通信接口层。其中,硬件接口层是硬件的访问底层接口,如K9F1G08U0A NANDFlash、FM25CL64铁电存储器和时钟模块的读写访问软件接口。文件系统管理层对税务业务相关的各种文件结构进行定义和管理,提供文件在EEPROM中的读写接口。安全管理层实施税控盘软件系统既定的安全控制策略。税务应用层依据《发票税控盘和传输盘技术规范(V2.0)》标准实施的税务功能。通信接口层实现税控盘和发票企业端的计算机或税局网络端计算机通过USB接口进行通信的接口,接口遵循USB1.1标准,通信协议为标准的BOT协议。需要说明的是,上述的硬件接口层、安全管理层、税务应用层以及通信接口层均为本领域普通技术人员所熟知的技术。
在本发明中,文件系统管理层采用三级结构,如图9所示,其中MF为根目录;GS_APP为国税应用,DS_APP为地税应用;在税务应用下包含目录文件、密钥文件和与税务应用相关的TAG标签文件如用户基本登记信息、用户一般登记信息、监控管理数据、税目税种信息等。
对于MF目录,其中MF文件头定义如表1所示:
文件头 |
字节(BYTES) |
描述 |
文件标识符 |
2 |
0x3f00 |
文件名称 |
6 |
TAXM01 |
文件长度 |
2 |
0x0100 |
最大应用数 |
1 |
0x02 |
已建应用数 |
1 |
0x01 |
总空间大小 |
2 |
0x8000 |
已用空间 |
2 |
0x0100 |
总长度 |
16 |
|
表1
MF_DIR文件的定义如表2所示:
文件体 |
字节(BYTES) |
描述 |
DF标识符 |
1 |
0x01国税 |
删除标志 |
1 |
0x00使用0xe5删除 |
入口地址 |
2 |
建立应用时写入 |
终止地址 |
2 |
建立应用时写入 |
已用空间 |
2 |
0x0100 |
DF文件名称 |
6 |
GSDF01 |
备用 |
2 |
|
总长度 |
16 |
|
DF标识符 |
1 |
0x02地税 |
删除标志 |
1 |
0x00使用0xe5删除 |
入口地址 |
2 |
建立应用时写入 |
终止地址 |
2 |
建立应用时写入 |
已用空间 |
2 |
0x0100 |
DF文件名称 |
6 |
DSDF01 |
备用 |
2 |
|
总长度 |
16 |
|
表2
MF_KEY文件定义如表3所示:
表3
对于GS_APP文件,它为国税应用,其详细情况如下:
GS_APP文件头的定义如表4所示:
文件体 |
字节(BYTES) |
描述 |
DF标识符 |
1 |
0x01国税 |
删除标志 |
1 |
0x00使用0xe5删除 |
入口地址 |
2 |
建立应用时写入 |
终止地址 |
2 |
建立应用时写入 |
已用空间 |
2 |
0x0100 |
最大发票类型数 |
1 |
0x09 |
已建发票类型数 |
1 |
0x01 |
文件名长度 |
1 |
|
DF文件名称 |
20 |
GSDF01 |
应用表格标志 |
1 |
0表示没有此表1表示此表存在 |
总长度 |
|
32 |
表4
GS_APP KEY文件的定义如表5所示:
文件头 |
字节(BYTES) |
描述 |
文件ID |
2 |
EF文件的ID 0x5f02 |
文件名称 |
6 |
DF_KEY |
文件长度 |
2 |
0x0100 |
权限1 |
1 |
保留 |
权限2 |
1 |
写权限 |
LEN1 |
2 |
密钥个数7 |
LEN2 |
2 |
密钥长度18H |
表5
文件体定义如表6所示:
表6
用户基本登记信息定义如表7所示:
字段中文名 |
长度(字节) |
编码格式 |
说明 |
TAG |
1 |
HEX |
固定为:02 |
LEN |
2 |
HEX |
|
税控盘编号 |
6 |
BCD |
编码规则参照附录1 |
纳税人识别号 |
13 |
HEX |
原始数据为20字节ASC |
启用时间 |
7 |
BCD |
CCYYMMDDHHMMSS |
表7
用户一般登记信息定义如表8所示:
字段中文名 |
长度(字节) |
编码格式 |
说明 |
TAG |
1 |
HEX |
固定为:03 |
LEN |
2 |
HEX |
|
主管税务机关代码 |
5 |
HEX |
原始数据为6字节BCD |
主管税务机关名称 |
80 |
ASC |
|
纳税人名称 |
80 |
ASC |
|
纳税人编码 |
8 |
BCD |
|
其他的控制信息 |
80 |
ASC |
|
表8
对于发票类型文件来说,ADF1为国税DDF1目录下的发票应用目录,税控盘在应用时,每增加一个发票类型应用,就在DDF1下建立一个ADF应用目录。
发票文件头的定义如表9所示:
文件头 |
字节(BYTES) |
描述 |
文件ID |
2 |
EF文件的ID 0x3f02 |
文件名称 |
6 |
DF_FP |
block |
2 |
0x0000 |
权限1 |
1 |
保留 |
权限2 |
1 |
写权限 |
LEN1 |
1 |
发票段数(最多10段) |
LEN2 |
1 |
当前段 |
page |
1 |
当前页 |
segment |
1 |
当前扇区 |
表9
发票段信息定义如表10所示:
表10
监控管理数据的定义如表11所示:
表11
发票模板的定义如表12所示:
表12
票据明细可变数据项的定义如表13所示:
表13
税种税目数据的定义如表14所示,其中每种发票类型管理的子用户数目不得超过255个:
字段中文名 |
长度(字节) |
编码格式 |
说明 |
TAG |
1 |
HEX |
固定为:04 |
LEN |
2 |
HEX |
|
税种索引1 |
1 |
HEX |
取值1~255 |
税种税目代码1 |
3 |
BCD |
|
税率1 |
3 |
HEX |
|
税种1中文名称 |
40 |
HEX |
20个汉字 |
税目1中文名称 |
40 |
HEX |
20个汉字 |
|
|
|
|
税种索引2 |
1 |
HEX |
取值1~255 |
税种税目代码2 |
3 |
BCD |
|
税率2 |
3 |
HEX |
|
税种2中文名称 |
40 |
HEX |
20个汉字 |
税目2中文名称 |
40 |
HEX |
20个汉字 |
... |
... |
... |
|
表14
对于代开单位来说,代开单位注册登记子用户信息的定义如表15所示,其中每种发票类型管理的子用户数目最多为5000个,子用户信息按纳税人识别号按升序排列:
字段中文名 |
长度(字节) |
编码格式 |
说明 |
TAG |
1 |
HEX |
固定为:05 |
LEN |
4 |
HEX |
|
逻辑地址 |
2 |
HEX |
NandFlash逻辑地址 |
分配标志 |
1 |
|
0xaa已经分配,0xff没有分配 |
表15
代开单位记录内容存放在K9F1G08U0A NANDFlash中,格式定义如表16所示:
TAG |
1 |
HEX |
固定为:05 |
LEN |
4 |
HEX |
|
纳税人识别号1 |
13 |
HEX |
原始数据为20字节ASC |
纳税人名称1 |
80 |
ASC |
|
减免标志1 |
1 |
|
‘00’-正常;‘01’--减免。 |
...... |
...... |
...... |
|
纳税人识别号N |
13 |
HEX |
原始数据为20字节ASC |
纳税人名称N |
80 |
ASC |
|
减免标志N |
1 |
|
‘00’-正常;‘01’--减免。 |
表16
对于DS_APP地税应用,其中DS_APP文件头的定义如表17所示:
文件体 |
字节(BYTES) |
描述 |
DF标识符 |
1 |
0x02地税 |
删除标志 |
1 |
0x00使用0xe5删除 |
入口地址 |
2 |
建立应用时写入 |
终止地址 |
2 |
建立应用时写入 |
已用空间 |
2 |
已用空间0x0100 |
最大发票类型数 |
1 |
0x09 |
已建发票类型数 |
1 |
0x01 |
文件名长度 |
1 |
|
DF文件名称 |
20 |
GSDF01、DSDF01 |
应用表格标志 |
1 |
0表示没有此表1表示此表存在 |
表17
DDF2地税目录下的其它文件内容存储和其下的ADF发票应用目录格式和DDF1国税下的相同。
对与本发明的Flash发票文件存储设计来说,税控盘中的发票明细信息存储在大容量存储器K9F1G08U0A NANDFlash中,容量为128MB。大容量存储器K9F1G08U0A结构由1024块组成,每块128K字节;每块64页,每页2k;每页4个扇区,每个扇区512字节。每个扇区包含一个16字节的备用空间SpareData,OOB。在设计FLASH发票文件存储时需要考虑到发票存储的稳定性和发票检索的快速性。而NANDFlash存储器并非一种十分稳定的存储器件,在NANDFlash出厂前就有一些不能使用的坏块,随着NANDFlash擦除次数的增加,还会有坏块产生,并且一些存储位会出现“位跳变”的现象。对于存储发票明细这样的重要数据,必须采取相应的技术来保证发票存储的稳定性。
税控盘发票的查询、明细数据恢复和报税时的发票明细读取操作都涉及到发票检索技术。企业在使用税控盘时,发票明细信息不断的写入税控盘中,如果一张发票的明细数据按1K字节来分配,税控盘中最多可以存储10多万张发票。对于税控盘这种运行在运行在24MHz的低速嵌入式系统来说,设计合适的FLASH发票存储结构以提高发票检索速度显得十分重要。
本发明为提高NANDFlash中的发票检索速度,税控盘采用自主研发设计的三级索引技术:一级检索放到主控制器SSX20芯片的发票段文件上,二级检索放到K9F1G08U0A NAND的块中,三级检索放到NANDFlash的页面上,单张发票检索时间为0.3秒。
具体地说,一级发票检索信息在ADF发票应用下的发票段信息中,包含了此发票段的发票相关检索信息:
开具份数、起始日期、NANDFlash起始块、删除发票份数、终止日期、NANDFlash终止块、终止页、已开发票数。发票段的定义如表18所示:
表18
发票二级索引是NANDFlash块发票总结信息,共32个字节总结此NANDFlash块中所存放的发票文件的总体相关信息,如表19所示:
|
字节 |
|
发票文件起始ID |
2 |
就是发票段内的偏移 |
发票文件起始日期 |
4 |
第一张发票的建立日期 |
发票文件结束日期 |
4 |
这一块的最后一张发票的建立日期 |
建立的发票总数 |
1 |
|
保留 |
21 |
|
表19
发票三级索引是发票文件头信息,共用16个字节来描述对应的发票明细,如表20所示:
文件头 |
字节(BYTES) |
描述 |
发票文件ID |
2 |
在发票段内的偏移 |
发票的建立日期 |
4 |
|
发票状态 |
1 |
发票的几种状态 |
发票类型 |
1 |
还没有使用 |
发票大小 |
2 |
按字节来表示 |
发票文件的入口 |
1 |
在块的第几个小页(单位1k) |
保留 |
5 |
|
表20
发票状态说明:
0x00:已开具的正数发票; 0x01:已开具的负数发票;
0x02:未开具发票的作废发票; 0x03:已开具正数发票的作废发票;
0x04:已开具负数发票的作废发票;
二级发票检索信息和三级检索信息在发票明细占用的NANDFlash的每个块的前2K字节,由发票文件头和NANDFlash块发票总结信息组成。这样每个NANDFlash块的前2K字节可以存放126张长度为16字节的发票文件头信息和一个32字节的NANDFlash块发票总结信息,此NANDFlash块剩余的126K字节的空间恰好可以存放126张最大长度为1KB的发票明细数据。
按日期查询发票明细的过程分为三个步骤,如图10所示:
①读取税控盘内发票的发票段个数,在每个发票段内读取对应的一级索引信息中的“起始日期”和“终止日期”数据项,判断要查询的发票日期是否在这两个日期中间,如果符合条件,读取一级索引中此发票段的“起始块”和“终止块”信息,否则查询下个发票段。
②循环NANDFlash“起始块”和“终止块”,读取NANDFlash中的二级索引中的“发票文件起始日期”和“发票文件结束日期”,判断是否符合查询条件,如果符合条件,进行下一步,否则查询下个NANDFlash块。
③发票文件“起始日期”和“发票文件结束日期”,判断是否符合查询条件,如果符合条件,进行下一步,否则查询下个NANDFlash块。
依次读取三级索引发票文件头中的“发票的建立日期”数据项,判断是否符合日期查询条件,如果符合,读取对应的发票明细信息。
税控盘发票文件系统采用如上所述的三级索引技术,能最大限度的提高NANDFlash存储器的利用效率和发票检索速度。
最后,在本发明中,还采用了铁电存储器高速缓存技术,
与EEPROM和Flash同样的非易失性存储器件相比,铁电存储器FRAM具有快速写入和高耐久性的特点。
具体来说,铁电存储器F-RAM执行写操作的速度和读操作的速度一样快。就在总线速度下写数据而言,F-RAM对写入的数据变成非易失性数据并没有任何延迟。与基于浮栅技术的非易失性存储器5毫秒的数据读写延时相比,F-RAM的写入速度只为几十纳秒,在安全系统应用中必不可少。
另外,铁电存储器F-RAM提供几乎无限次写入的耐久性,这就意味着它不存在像其他非易失性存储器件那样。对于采用浮栅技术的非易失性存储器而言,存在1E5时钟周期的硬故障和无法写入,不适合应用于高耐久性的应用。
在税控盘中有着两种类型的存储介质SSX20主控器内的EEPROM和大容量存储器K9F1G08U0A NANDFlash。
铁电存储器FM25CL64与二者的性能比较如表21所示:
|
写入时间 |
擦除时间 |
极限擦除次数 |
数据保存时间 |
NANDFlash |
300μs |
2ms |
100K |
10年 |
EEPROM |
1.3ms |
4ms |
300K |
100年 |
FRAM |
0.3μs |
无需擦除 |
无限次 |
45年 |
表21
大容量存储器K9F1G08U0A NANDFlash在块擦除后,一页范围内的数据写入次数要求不能超过4次,否则会影响此块Flash的使用寿命。大容量存储器NANDFlash会存在一个bit位翻转现象,这个问题在Flash存储关键文件时是致命的,为了解决位翻转问题需要使用EDC/ECC等校验算法。上述的EDC/ECC校验算法为本领域普通技术人员所熟知的技术。
主控芯片SSX20的NNADFlash控制器提供读写NANDFlash 512字节数据时产生ECC码。在前面介绍的发票文件在NANDFlah中存储结构中,如果开具一张发票,就将16字节的发票文件头写入NANDFlash中,NANDFlash前2k的一页的范围内会被写入127次,远大于一页最多4次写入的原则,这样将极大的影响此块Flash的使用寿命,这样的操作方式也无法使用NNADFlash控制器产生ECC校验码的功能。
在税控盘中使用铁电存储器FM25CL64,利用其非易失、写入无需擦除和高耐久特性能有效的解决上述两个问题。在开具发票时,先将发票文件头写入FM25CL64中,暂不写入NANDFlash中;当开具的发票张数达到32张时,将这512字节的发票文件头信息一次性的写入NANDFlash在前2K空间对应的位置中,并将NANDFlash控制器产生的ECC校验码写入到此扇区的OOB中。这样的操作方法使得NANDFlash的前2K存储器只需写入4次,不会影响此块Flash原有的使用寿命。在读取NANDFlash某个扇区数据时,NANDFlash控制器也会产生ECC校验码,如果此ECC校验码与存储在OOB区的ECC校验码不同,说明NANDFlash发生了位翻转现象,使用软件ECC码校准算法可以对其中的1到2位进行校准,能有效保证发票数据的准确性。存储在NANDFlash块中后126字节的发票明细数据最大长度是512字节的整数倍,在上述的写入次数和ECC码的产生上不存在问题。
如上所述,税控盘对最近32张发票文件头采用暂存在FM25CL64铁电存储器的设计。税控盘在业务流程中会对最近开具的发票进行较为频繁的操作,如读取最近一张发票的内容,对最近开具的发票进行作废等。铁电存储器的快速写入和读取特性使得这些操作的速度明显提高,能有效应降低系统掉电对数据造成损坏的风险,在涉及对最近开具发票的发票文件头操作时,也减少了对NANDFlash擦除、写入的次数。
综上所述,在税控盘中采用铁电存储器高速缓存的技术能有效提高税控盘存储系统的稳定性和使用寿命。
实施例2
本实施例与实施例1不同的是,在本实施例中,为更好地实施本发明,还可以另外增设电源保护模块与电源模块相连接,上述的电源保护模块主要是指抑制电流冲击的电感L1,它可以有效减小瞬间大电流对税控盘电路的影响,如图3所示。
其他技术特征与实施例1相同。
实施例3
本实施例与实施例1不同的是,在本实施例中,在税控盘硬件系统中,缓存器为双环耦合全光缓存器,上述的双环耦合全光缓存器为本领域普通技术人员所熟知的技术。
基于光交换的全光网是通信网的必然趋势,而光数字分组交换是全光网的最终选择。全光缓存器是未来的全光数字分组交换网的关键部件,它是甚高速率通信网调度和控制包转发的基础。它不仅能有效地提高光交换网络节点的吞吐量,降低丢包率,提供延缓时间以便节点进行包头处理。当不同的用户争用同一个通道时,缓存器能有效地提供解决竞争的方案;或者当多个用户等待接入网络的时候需要用它来排队。光缓存器以全速接受和保存数据包,同时接收机可以以比较慢的速率读出这些数据包,达到速率调整与数据帧重新组装的目的。因此,全光缓存器就成为全光路由器的核心部件。因此将双环耦合全光缓存器应用到税控盘中已是将来发展的必然趋势。
其他技术特征与实施例1相同。