UDB。 这是什么 第5部分。数据路径。 有用的小东西



我们将继续考虑基于赛普拉斯专有文档的UDB,即与Datapath相关的有用琐事。

循环的一般内容是“ UDB。 这是什么?
第1部分。简介。
第2部分。数据路径。
第3部分。数据路径FIFO。
第4部分。数据路径ALU。
第5部分。数据路径。 有用的小东西。 (当前文章)
第6部分。管理和状态模块。
第7部分。时序和复位控制模块
第8部分。处理UDB

21.3.2.6 CRC / PRS支持


数据路径支持循环冗余校验(CRC)和伪随机序列(伪随机序列,PRS)的生成。 在数据路径块之间跟踪链接的信号,以支持长度超过8位的CRC / PRS。

选择最高CRC / PRS块的最高有效位(英语最高有效位,MSB)的编号,并将其跟踪(并与其他块链接成链)到较低的块。 之后,将具有输入数据(SI数据)的XOR操作应用于MSB,从而提供反馈信号(反馈,FB)。 之后,将反馈信号跟踪(并与其他模块成链状连接)到较低的模块。 该反馈值用于所有模块,以对当前电池值执行多项式的异或运算(来自Data0或Data1寄存器)。

图21-18显示了CRC操作的结构配置。 PRS配置相同,但移位输入数据(SI)被拉为0。在PRS模式下,D0或D1包含多项式值,而A0或A1包含初始值(种子)和计算后获得的CRC值。

译者注意。
显然,这句话在专有文档中有一个错字,因为应该在PRS模式下获得一个随机数。 有关CRC的信息位于下面。



图21-18。 CRC的功能结构。

要激活CRC支持,必须将动态配置RAM中的CFB_EN位置1。这将激活SRCB ALU输入和CRC反馈信号的AND操作。 如果该位设置为零,则反馈信号将被分配为1,这允许执行正常的算术运算。 在每个周期动态控制该位,使您可以将CRC / PRS操作与其他算术操作交替使用。

链接CRC / PRS


图21-19显示了在三个UDB之间的链中绑定CRC / PRS的示例。 此方案支持在分辨率为17到24位的模式下运行。 链中的控制绑定位是根据数据路径在链中的位置设置的(请参见图)。



图21-19。 CRC / PRS的链绑定。

CRC / PRS反馈信号(cfbo,cfbi)如何成链连接:

  • 如果所选的块最年轻,则此块的反馈信号由内置逻辑生成,该逻辑将移位输入移至右侧(sir)并对其进行最高有效位的XOR操作。 (在PRS的情况下,“ sir”信号设置为“ 0”)。
  • 如果所选的块不是低阶块,则必须锁定CHAIN FB配置位,并且从前一个块开始以链状发送反馈。

CRC / PRS MSB信号(cmsbo,cmsbi)链如何:

  • 如果所选块为高,则使用MSB_SEL配置配置MSB配置位(根据所选多项式)。
  • 如果所选的块不高,则必须锁定CHAIN MSB配置位,并且将从下一个块沿链发送MSB信号。

多项式规范CRC / PRS


作为要写入相应寄存器D0 / D1的多项式配置的示例,请考虑CCITT CRC-16多项式,其形式为x 16 + x 12 + x 5 +1。图21-20显示了从多项式提取数据格式的方法。 根据定义,术语X0始终为1,因此无需编写。 对于该多项式的所有其他成员,将单位设置为必要的位置,如图所示。



图21-20。 CCITT CRC16多项式的格式。

请注意,多项式的格式与经典十六进制格式中指定的格式略有不同。 例如, CCITT多项式CRC16通常被称为1021H 。 要将其转换为数据路径所需的格式,您需要右移一个位置,并向MSB位加1。 在这种情况下,要写入D0或D1的正确多项式值为8810H

CRC / PRS配置示例


以下是CRC / PRS配置要求的简要说明,假设D0是多项式,并且在A0中计算CRC / PRS:

  1. 选择一个合适的多项式(上面的示例),并将其写入D0。
  2. 选择适当的种子(例如,对于CRC,全为零,对于PRS,为全1),并将其写入A0。
  3. 如有必要,如上所述配置链接。
  4. 如上所述,选择一个MSB项目。
  5. 配置动态RAM RAM字段:

一个 选择D0作为ALU“ SRCB”(ALU B数据源)
b。 选择A0作为ALU“ SRCA”(ALU A数据源)
c。 选择XOR进行ALU操作
d。 选择SHIFT LEFT进行SHIFT操作
e。 选择CFB_EN以启用CRC / PRS支持。
f。 选择ALU作为记录源A0

选择CRC时,您需要为输入数据配置右移字段,并在每个步骤中在此输入上提交数据。 选择PRS时,必须将右移设置为0。

UDB的这种配置会生成必要的CRC或生成最高有效位,然后可以将其转发到外部,从而从中删除伪随机序列。

外部模式CRC / PRS


要启用外部CRC或PRS计算,可以指定一个静态配置位( EXT CRCPRS )。 如图21-21所示,在PLD块中执行CRC反馈计算。 当该位被拉高时,CRC反馈信号直接从输入多路复用器CI(Carry In)发送,绕过内部计算。 该图显示了一个简单的配置,支持高达8位的CRC或PRS。 通常,使用内置电子电路,但是此参数允许您使用时分复用在一个UDB中实现更复杂的配置,例如16位CRC / PRS功能。



图21-21。 外部模式CRC / PRS。

在此模式下,动态配置RAM的CFB_EN位还控制是否对CRCB ALU输入处的CRC反馈信号使用AND操作。 因此,与内部CRC / PRS模式一样,该功能可以在必要时与其他功能交替使用。

21.3.2.7数据路径输出和多路复用


条件由电池触发值,ALU输出和FIFO状态产生。 这些条件可以通过数字跟踪通道传输到其他UDB,以形成向DMA或“芯片分支”的中断请求。 下表显示了16种可能的条件。

表21-16。 数据路径条件生成。
职称条件链条?内容描述
ce0比较等于是的A0 == D0
cl0比较少于是的A0 <D0
00零检测是的A0 == 00小时
ff0找到单位是的A0 = FFh
ce1比较等于是的A1或A0 == D1或A0(动态选择)
cl1比较少于是的A1或A0 <D1或A0(动态选择)
11零检测是的A1 == 00h
ff1找到单位是的A1 == FFh
ov_msb溢出/溢出没有啦进位(msb)^进位(msb-1)
co_msb执行是的迁移特定的MSB位
cmsbCRC MSB是的MSB CRC / PRS功能
所以移出是的所选换档操作的数据输出
f0_blk_statFIFO0块状态没有啦描述取决于FIFO配置。
f1_blk_statFIFO1块状态没有啦描述取决于FIFO配置。
f0_bus_statFIFO0总线状态没有啦描述取决于FIFO配置。
f1_bus_statFIFO1总线状态没有啦描述取决于FIFO配置。
数据路径有六个出口。 如图21-22所示,每个输出都有一个16合1多路复用器,使您可以将16个信号中的任何一个路由到任何Datapath输出。



图21-22。 与输出多路复用器的连接。

比较


有两个比较,其中一个具有固定源( 比较0 ),而另一个是动态选择的( 比较1 )。 每个比较都有一个8位静态屏蔽寄存器,允许在指定的位字段中进行比较。 默认情况下,屏蔽处于禁用状态(比较所有位),必须手动激活。

比较1输入是动态配置的。 如下表所示,有四个“比较1”参数适用于较少和相等的条件。 CMP SELACMP SELB配置确定可能的比较配置。 动态配置的RAM位在每个周期指定一种配置(A或B)。

表21-17。 比较配置。
CMP SEL A
CMP SEL B
比较1的比较模式
00A1与D1比较
01A1与A0比较
10A0与D1比较
11A0与A0比较
比较0比较1独立地与前一个数据路径中生成的条件相关联(按处理顺序)。 是否链接比较是在UDB配置寄存器中静态指定的。 图21-23显示了将“等于”链接到比较链,这简化为将AND运算应用于此块的“等于”比较以及前一个块的输入。



图21-23。 链接到比较链是“相等的”。

图21-24显示了链接到较少比较链。 在这种情况下,给定块的输出结果(cl0)由“小于”比较电路生成,并且是无条件的。 如果条件等于当前块并且打开了链接模式,则将该信号与来自链的输入结果进行“ 或”运算



图21-24。 链接少于

检测全零和全一


每个电池都有一个全零的检测器和一个所有单位的检测器。 这些条件可以按照UDB配置寄存器中的说明进行静态链接。 绑定模式在UDB配置寄存器中设置。 零检测链中的链接是根据与比较“等于”相同的概念发生的。 如果激活了链接,则将AND操作应用于成功链接的数据。

溢流


溢出定义为MSB中的XOR传输操作和MSB中的传输。 如MSB_SEL位所示,使用当前的MSB执行计算。 此条件不能被链接,但是,如果在更高的数据路径上执行总容量功能直到连接块之间的传输,则计算将是正确的。

21.3.2.8并行输入和输出数据路径


如图21-25所示, 并行输入 (PI)和并行输出 (PO)信号提供了将数据传递和跟踪资源到Datapath以及从其中输出数据的能力有限。 在A0和A1之间选择ALU asrc时,PO信号始终可用于跟踪。

译者注意。
这是极其重要的机制,它使UDB不仅可以处理串行数据,还可以处理并行数据。 出于某种原因,本文档没有强调这一点,但是您可以通过传入其中一个应用笔记来了解它。



图21-25。 并行输入/输出数据路径信号。

要将数据输入到ALU中,必须选择Parallel In 。 有两种模式:静态和动态。 在静态模式下, PI SEL将asrc ALU 值转换为PI。 PI DYN位用于提供PI动态模式。 当它被翘起并且还假设PI SEL为0时,PI多路复用器可以控制动态控制位CFB_ENCFB_EN位的主要功能是提供PRS / CRC功能。

21.3.2.9链接数据路径


每个数据路径块都有一个8位ALU,用于将连字符,移位,捕获触发器和条件信号链接到最近的相邻数据路径,以创建算术函数和移位具有更高位深度的寄存器。 这些信号以链状连接,是隔离的,使您可以在一个周期内有效地实现16-24位和32位功能,而不会出现加速以及跟踪通道延迟引起的其他问题。 此外,链式手柄支持原子读取链接块中的电池。 如图21-21所示,所有生成的条件信号和捕获信号都从最年轻的块到最老的块连接在一起。 从初级到高级,也执行向左的转换。 从最老到最年轻,向右移动。 用于反馈的CRC / PRS链接信号从高到低路由,而MSB输出从高到低发送。



图21-26。 数据路径线程链。

21.3.2.10 RAM动态配置


每个数据路径都包含一个动态配置RAM,该RAM具有8个字,每个字16位(见图21-27)。 这种RAM的目的是基于每个数据路径的选定时钟来控制每个周期的数据路径配置的位。 RAM具有同步的读写端口,用于通过系统总线下载配置。

为了将这些16位字快速输出到Datapath,提供了一个额外的异步读取端口作为控制位。 多路复用器从数据路径输入中选择异步地址输入,该数据可以从任何可能的信号中获取,包括微电路支路,PLD输出,控制单元输出或任何数据路径输出。

异步读取端口的主要目的是在单个周期内提供对数据路径控制位的快速解码。



图21-27。 RAM I / O配置。

下表中显示了动态配置的RAM字的字段以及每个字段的用法说明。
报名地址15141312111098
记忆卡61h-6Fh
(奇数)
FUNC [2:0]FUNC [2:0]FUNC [2:0]SRCASRCB [1:0]SRCB [1:0]SHIFT [1:0]SHIFT [1:0]

报名地址7654321个0
记忆卡60h-6Eh
(甚至)
A0 WRSRC [1:0]A0 WRSRC [1:0]A1 WRSRC [1:0]A1 WRSRC [1:0]CFB ENCI SEL西塞尔CMPSEL
表21-18。 动态配置参考。
领域参量价值观
FUNC [2:0]3ALU功能000通过
001 INC SRCA
010 DEC SRCA
011添加
100 SUB
101 XOR
110与
111 OR
SRCA1个输入源ALU A0 A0
1 A1
Srcb2输入源ALU B00 D0
01 D1
10 A0
11 A1
SHIFT [1:0]2移位功能00通
01左移
10右移
11个半字节交换
A0 WR SRC [1:0]2记录A0的来源00无
01 ALU
10 D0
11楼0
A1 WR SRC [1:0]2记录A1的来源00无
01 ALU
10 D1
11 F1
CFB EN1个CRC反馈激活器0使能
1禁用
CI SEL1个选择要迁移的配置0个ConfigA
1个配置
西塞尔1个选择班次配置0个ConfigA
1个配置
CMP选择器1个选择配置进行比较0个ConfigA
1个配置
(a。-对于CI,SI和CMP字段,RAM字段允许您选择两个预定义选项之一。请参见静态寄存器配置)。

待续...

Source: https://habr.com/ru/post/zh-CN438818/


All Articles