Intel® MAX® 10 FPGA配置用户指南

ID 683865
日期 1/10/2022
Public
文档目录

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)>;
表 31.  端口定义
端口 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=0clk上升沿处的移位寄存器中。当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)。