仅对英特尔可见 — GUID: sss1397122714317
Ixiasoft
3.6.3. 通过用户逻辑访问错误检测模块
错误检测电路将计算的32-bit CRC标识存储在32-bit寄存器中。用户逻辑从内核中读取该标识。fiftyfivenm_crcblock原语为一个WYSIWYG组件,用于建立用户逻辑到错误检测电路的接口。fiftyfivenm_crcblock原语原子,其中包含atom中必需要有的输入和输出端口。要访问逻辑阵列,必须将fiftyfivenm_crcblock WYSIWYG atom插入设计中。建议的.clk端口时钟频率应遵循EDCRC模块的时钟频率。
图 15. Intel® MAX® 10器件错误检测模块结构图(带接口)
以下实例显示如何定义 Intel® MAX® 10器件中WYSIWYG原子的输入和输出端口。
fiftyfivenm_crcblock <name> ( .clk(<ED_CLK clock source>), .shiftnld(<ED_SHIFTNLD source>), .ldsrc (<LDSRC source>), .crcerror(<CRCERROR_CORE out destination>), .regout(<output destination>) ); defparam <crcblock_name>.oscillator_divider = <internal oscillator division (1 to 256)>;
端口 | Input/ Output | 定义 |
---|---|---|
<crcblock_name> | — | CRC模块的唯一标识符,代表给定描述语言(例如:Verilog HDL、VHDL和AHDL)的所有合法标识符名称。该字段是必需的。 |
.clk(<clock source> | Input | 该信号旨在作为本单元的时钟输入。本单元的所有操作皆与该时钟上升沿相关。无论其是否将数据加载到单元中,亦或是将数据从单元输出,都总是在上升沿进行。该端口为必需。 |
.shiftnld (<shiftnld source>) | Input | 该信号是错误检测块的输入。如果shiftnld=1,则数据从从内部移位寄存器移入clk每一个上升沿处的regout。如果shiftnld=0,则根据ldsrc端口输入,移位寄存器并行加载预计算出的CRC值,或者更新寄存器内容。该端口是必需条件。 |
.ldsrc (<ldsrc source>) | Input | 该信号是错误检测模块的输入。若ldsrc=0,则选择将预先计算的CRC寄存器的数据加载到shiftnld=0的clk上升沿处的32 bit移位寄存器中。如果Ifldsrc=1,则选择将标识寄存器(CRC计算的结果)的数据加载到shiftnld=0的clk上升沿处的移位寄存器中。当shiftnld=1时,该端口被忽略。该端口为必需条件。 |
.crcerror (<crcerror out destination>) | Output | 该信号是与器件内部振荡器(100-MHz或80-MHz内部振荡器)同步的单元的输出,而非与clk端口同步的单元的输出。如果错误模块检测到已翻转的SRAM位,并且内部CRC计算得数与预先计算的值不同,则自动该信号自动置位到高电平。必需将该信号连接到输出管脚或者双向管脚。如果连接到输出管脚,只可监控CRC_ERROR管脚(内核无法访问该输出)。如果CRC_ERROR信号被内核逻辑用于读取错误检测逻辑,则该信号必须连接到BIDIR管脚。要将该信号直接馈送到内核,可通过将信号馈送至BIDIR管脚来实现,但该管脚的oe端口必须已连接VCC。 |
.regout (<output destination>) | Output | 该信号是错误检测移位寄存器的输出,其同步到clk端口,将由内核逻辑进行读取。此信号在每个周期移动一位。用户需要对该clk信号计时31个周期,以读取移位寄存器的32个位。.regout端口上的值是实际值的反转(inversion)。 |