可编程逻辑
1. 概述
近些年来,各种电路功能,包括模拟电路和数字电路,越来越多地用单片集成电路来实现。采用单片集成电路不仅可以有效地提高电路可靠性和其它性能,而且也大大地降低了使用难度。许多单片集成电路的信息输入和工作控制是通过数字信号实现的。常用的控制器件为微控制器和可编程逻辑器件。
由于微控制器一次只能执行一条指令,因此它的主要局限性是工作速度。采用硬件方案设计的数字系统总是比软件方案的数字系统的工作速度快。对数据的传输速率有较高要求的情况下,采用可编程逻辑器件是一种较好的选择。可编程逻辑器件中的FPGA器件不仅提供通用逻辑单元,而且还提供了可以形成各种存储器的嵌入式阵列块。
2. nRF2401A无线收发芯片介绍
无线收发芯片nRF2401是挪威NORDIC SEMICONDUCTOR公司的产品,它把射频收发电路集成在一块芯片上,芯片内部包含频率综合器、微波功率放大器、信号调制和解调器等部分。控制器件与nRF2401芯片之间的数字传输通过串行同步接口实现。nRF2401芯片作为一种单片无线收发芯片,它的射频范围为2.4GHz~2.5GHz,这个频率范围被称作为工业—科学—医疗(Industrial-Scientific-Medical,ISM)频带,可以自由使用。
在正常工作模式下,发送端的nRF2401无线收发芯片可以从控制器件接收数据,然后发射频移键控(FSK)信号;在接收端nRF2401无线收发芯片接收频移键控信号,然后把解调产生的数据送到控制器件。正常工作模式具有2种工作方式:ShockBurstTM方式和直接方式。
ShockBurstTM方式应用片内FIFO存储器,从而使得控制器件与nRF2401芯片之间的数字传输可以采用较低的数据率,nRF2401芯片之间的数字无线电通信采用较高的数据率。这个优点降低了射频功率器件的工作时间,因此降低了电源的功耗,这在使用电池供电的场合非常重要。除此之外,ShockBurstTM方式对射频传输数据帧的处理也比较简单。射频传输数据帧包括4个部分,它的结构如表1所示。这个结构对于2种工作方式,ShockBurstTM方式和直接方式,都是一样的。
PRE-AMBLE被称为为前置代码,这个部分的宽度为8位。当工作在ShockBurstTM方式,发射芯片在发送数据时自动把这个部分添加到射频传输数据帧中;接收芯片从接收到的射频传输数据帧中自动取掉这个部分。
ADDRESS为用于接收的nRF2401无线收发芯片的地址,这个部分的最大宽度为40位。当工作在ShockBurstTM方式,发射芯片在发送数据时,控制器件向nRF2401无线收发芯片传送的数据中必须包含这个部分;接收芯片从接收到的射频传输数据帧中将自动取掉这个部分。
PAYLOAD为实际需要传输的信息。当工作在ShockBurstTM方式,这个部分包含的数据位数可以由下面公式计算。
PAYLOAD = 256 – ADDRESS – CRC
CRC为循环冗余检查,这个部分的宽度可以为8位或者16位。循环冗余检查功能只能在ShockBurstTM工作方式下使用,在直接工作方式下不能使用这个功能。发射芯片在发送数据时自动把这个部分加到射频传输数据帧中,它的宽度由芯片的配置字来决定;接收芯片从接收到的射频传输数据帧中自动取掉这个部分。
射频传输数据帧中包含较长的地址位和循环冗余检查位虽然减少了实际需要传输的信息使用的数据宽度,但是可以降低误码的发生概率。
3. 数字压缩的实现
在采用16位接收地址和16位CRC编码,可用于传输遥测数据的位数可由上式计算出,其数值为224位。为保证待传输的测量信息具有足够的动态范围,遥测系统的所有模拟/数字转换都采用12位的模拟/数字转换器。使用无线收发芯片nRF2401传输12位的PCM编码,一次只能传输18路测量信号。
对于监测的模拟信号,小振幅信号比大振幅信号出现的可能性大,因此采用非线性编码可以用较少的数据位数获得需要的精度,即小振幅信号使用较多的编码,大振幅信号使用较少的编码。这样的非线性编码系统也被称作为压缩扩展系统,数据在传输之前先被压缩,然后在接收端再被扩展。
μ律压缩扩展是一种常用的算法,它的压缩特性为:
式中,Vmax:最大未压缩模拟输入信号幅度;Vin:当前模拟输入信号幅度;μ:定义压缩量的参数;Vout:压缩模拟输出信号幅度。μ值越高,压缩量越大,μ值为0时,特性为直线,这时无压缩。
数字压缩把12位线性编码转换成8位非线性编码,这样在同样的一帧224位测量数据就可以容纳28路信号,比线性编码多出10路。这里转换的过程是使用8个直线段来近似μ值为255的模拟压缩特性,每个直线段的斜率等于前一段的二分之一。
8位压缩码由3段标识码和5位幅度码组成。表2给出12位到8位数字压缩和扩展编码。12位线性编码中标为X的位在压缩时被丢弃,标为A、B、C、D和E的位被原样传输。在段0和段1,数据没有被压缩,原始的12位线性编码可以被完整地恢复;在段2,压缩比为2:1,64个线性编码只生成32个压缩编码;在段3,压缩比为4:1,128个线性编码只生成32个压缩编码。依次类推,在段7,压缩比为64:1,2048个线性编码只生成32个压缩编码。
采用查表的方法是一种常用的编码方法,但是对于表2所示的压缩编码,使用硬件描述语言更加简单,编码速度更快、也节省可编程逻辑器件的资源。使用VHDL的并行条件信号赋值语句实现压缩编码的代码如下,data_pcm12为12位线性编码,data_pcm8为8位压缩编码。图1给出使用ALTERA公司的EP1C3T100I7芯片的仿真波形图,完成一次压缩编码只需要不到15ns的时间。
data_pcm8 《= “000” & data_pcm12(4 DOWNTO 0) WHEN data_pcm12 《“000000100000” ELSE
“001” & data_pcm12(4 DOWNTO 0) WHEN data_pcm12 《“000001000000” ELSE
“010” & data_pcm12(5 DOWNTO 1) WHEN data_pcm12 《“000010000000” ELSE
“011” & data_pcm12(6 DOWNTO 2) WHEN data_pcm12 《“000100000000” ELSE
“100” & data_pcm12(7 DOWNTO 3) WHEN data_pcm12 《“001000000000” ELSE
“101” & data_pcm12(8 DOWNTO 4) WHEN data_pcm12 《“010000000000” ELSE
“110” & data_pcm12(9 DOWNTO 5) WHEN data_pcm12 《“100000000000” ELSE
“111” & data_pcm12(10 DOWNTO 6);
4. nRF2401A无线收发芯片数据接口的设计
无线收发芯片nRF2401的ShockBurstTM工作方式可以使得控制器件与该芯片之间的数字传输可以采用较低的数据率,以降低对控制器件的要求;nRF2401芯片之间的数字无线电通信采用较高的数据率,最高为1Mbps,以降低电源的功耗。由于无线收发芯片nRF2401从控制器件获取数据和发射频移键控信号是分时进行的,因此控制器件较低的工作速度将降低实际的数据传输速率。
nRF2401芯片的最高数据传输速率也为1Mbps,由于数据格式的非标准,如果采用微控制器实现则只能采用位寻址指令来实现,多条指令才能完成一位数据的传送,使得达到较高的数据传输速率非常困难。应用FPGA器件实现需要的串行同步接口非常方便,使用2MHz的时钟,第一个时钟用于准备数据,第二个时钟用于产生同步时钟,即可获得1Mbps的数据传输速率。
采用有限状态机(FSM)的时序电路模型,使用VHDL实现的nRF2401A无线收发芯片数据接口代码格式如下:
IF (data_read = ‘0’) THEN
current_state 《= 0;
ELSIF (data_read = ‘1’) THEN
IF (clk_sys‘EVENT AND clk_sys = ’1‘) THEN
CASE current_state IS
••••••
WHEN 83 =》
current_state 《= 84;
ce_read 《= ’1‘; data_addr 《= “00000”;
ce 《= ’1‘; clk1 《= ’0‘; data 《= pcm8_m(199); WHEN 84 =》
current_state 《= 85;
ce_read 《= ’1‘; data_addr 《= “00000”;
ce 《= ’1‘; clk1 《= ’1‘; data 《= pcm8_m(199);
••••••
图2是实现的nRF2401A无线收发芯片数据接口代码模块的仿真波形图。遥测系统完成所有模拟/数字转换器输出数字信号的读取,并把这些12位的数据压缩为8位数据存入一个双口RAM,接着产生一个读数信号data_read。在读数信号低电平期间有限状态机状态信号current_state清零,低电平过后,在时钟信号clk_sys控制下实现nRF2401A的数据接口要求的时序。
在状态机执行过程中,首先产生双口RAM的读使能信号ce_read和地址信号data_addr,把数据转存在一个具有200位的信号pcm8_m中;接着逐位向nRF2401A无线收发芯片传输16位地址和信号pcm8_m中包含的200位数据。完成所有信息的传送以后,状态机停在最后一个状态,等待下一个低电平的读数信号data_read。
5. 总结
本文作者创新点: 使用nRF2401A无线收发芯片使得人工从现场获取数据改变为遥测获取数据,利用FPGA器件获得要求的数据传输速率。应用ALTERA公司的FPGA器件EP1C3T100I7实现nRF2401A的数据接口占用了其2910个逻辑单元的358个(12%),器件还有足够的资源实现模拟/数字转换器的控制以及整个遥测系统的控制。EP1C3T100I7内部的嵌入式阵列块具有59904位,这些资源可以用于实现双口RAM。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !