基于VHDL语言的快速查表电路
1 引言
某大型医用电子设备的检测部分是由32个子系统组成。每个子系统又含有8个block电路,每个block要处理4个光电倍增管产生的位置、能量和时间信息。均匀分布在空间圆周上的256个block对接收的同位素辐射信号进行处理后,给出每个信号的相应参数信息送给成像系统作进一步处理。我们将每个子系统的8个block电路集成到一片FPGA芯片中,并用单片机予以控制。本文将着重介绍block电路中快速查表电路的设计。
2设计方案
2.1查表算法
每个block电路的前端检测部分有64块晶体条,它们排列成8×8阵列。每块晶体条设有左边界值X1、右边界值X2、下边界值Y1、上边界值Y2,以及能量下边界值E1、能量上边界值E2、时间修正值T和晶条号N,这些参数被存放在FPGA的内部存储器中。在系统运行时,根据同位素辐射信号的位置值a、 b,可以通过查表电路确定是哪一块晶体条接受到该信号,并且可同时确定信号的能量状态和校正信号的时间信息。
轴的坐标编码。每一块晶体条与X、Y有着一一对应的关系。例如X=110B,Y=000B时,对应的是6号晶体条。若将此表格的信息存放在存储器中,并设 X为地址编码的低3位,Y为高3位,则地址编码范围为000000B~111111B,对应的晶体条的编号为0~63。
查表时,首先从X=100B,Y=100B(即36号晶体条)开始,将进入本区域同位素辐射信号的位置值a、b同时与36号晶体条的边界值X1、X2、 Y1、Y2进行比较。若aX2,X加1;X1Y2,Y加1;Y1
2.2 信息存储
FPGA内部存储器存放信息的示意图如图2所示。与各块晶体条有关的参数分别存放在8个存储区内,每个存储区含有64个字节。其中,X2、X1组成一个 16位的字节,占据RAM A 地址为00H~3FH的存储单元;E2、E1组成一个16位的字节,占据RAM A地址为40H~7FH的存储单元。同理,Y2、Y1组成一个16位的字节,占据RAM B地址为80H~BFH的存储单元;N、T组成一个16位的字节,占据RAM B地址为C0H~FFH的存储单元。其中X1、X2、Y1、Y2的6~0位地址码相同,E1、E2、N、T的6~0位地址码相同。存储器地址的5~3位对应于Y坐标编码,2~0位对应于X坐标编码,第6位对应于奇偶控制码G。因此,地址码的6~0位可表示为address<=G& Y&X。显然,图2中8个参数的5~0位的地址码相同。我们把与同一块晶体条相关的参数存放在5~0位地址码相同的存储单元中。这样,只要我们根据晶体条的边界值X1、X2、Y1和Y2,查找到接收信号的晶体条,仅需改变地址码的第6位G,就可以找到与该晶体条相关的参数E1、E2、N和T。在这种情况下,RAM A的地址码可表示为ADDR_A<='0' &G&Y&X,RAM B的地址码为ADDR_B<='1' &G&Y&X。
相关文章
- 2024-10-08辐流沉淀池φ100m周边驱动刮泥机钢结构桁架有限元分析
- 2023-05-18基于谐振原理的硅微薄膜弯曲疲劳装置的设计
- 2024-04-02DZS-Ⅱ型低速风洞微风段测量
- 2023-11-21用声发射技术测定轴承缺陷
- 2024-10-31高压电能整体检测的意义
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。