保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

错误检测与纠正电路的设计与实现


第三步,如果是数据位出错,将其自动更正,并将正确的值再回写到相应的内存地址中,将正确的数据值输出到数据总线;如果是校验位出错,可以直接将正确的数据位输出到数据总线上。这部分功能是EDAC功能的核心,可以用VHDL语言来实现,以下是设计思路。

(1)对输入的设计

① 数据位和校验位的输入。

② 控制端的输入。经过前面的分析,一共有四种状态(写一种状态、读三种状态),可以设计两个控制端,设为C0、C1。其功能见表2。

(2)对输出的设计

① 数据位和校验位的输出。其中校验位的输出在读周期和写周期有所不同:在写周期校验位输出是生成的校验位;而读周期就没有必要输出校验位了,可以设计为输出伴随式S。

② 错误标记输出。在应用中,可以设计两种错误标记输出,分别记为ERR和INT。其中ERR输出"1"表示数据位有错误产生,包括可自动纠正的一位错误和两位或两位以上错误。INT输出"1"则表示发生了两位或以上错误,无法自动纠正,向CPU申请中断,由CPU进行异常处理。

在表2中,总结了上面所描述的功能设计。

表2 EDAC模块功能表

控制端 存储器周期 功能描述 数据位 校验位 错误标记输出 C0 C1 ERR INT 0 0 写周期 产生校验位,并输出 输入 输出 0 0 0 1 读周期 读入数据位和校验位 输入 输入 0 0 1 1 读周期 锁存数据位和校验位并进行错误检测 锁存 锁存 0/1 0/1 1 0 读周期 校正错误并输出诊断结果 输出 输出伴随式S 0/1 0/1

图1为EDAC部分逻辑等效图。

  由于逻辑关系已经非常明确了,下面讨论采用VHDL语言实现上述EDAC模块的功能。可以有两种方法来实现VHDL编程,即RTL级语言描述和行为级语言描述。其中RTL级描述的实现难度比较大,需要根据前面设计的逻辑功能,转换为基本的门来描述;有效率高和受逻辑综合软件的影响小等优点,但可读性差,实现起来比较困难。因此我们采用的是行为级描述,根据四个输入作敏感量,用一个进程(process)就可以实现。编程思路是:根据控制端C0和C1进行判断,如果是写周期,直接将输入的数据相应位进行异或后输出;如果是读周期,先生成伴随式S,然后判断S,用CASE语句执行相应的输出。需要强调的是在不需要输出的时候,要把输出端用高阻封住。VHDL源代码见本刊网络补充版(http://fanwen.oyaya.net收集整理)。

  利用这个EDAC模块再辅以简单的外围电路就可以实现较强的EDAC功能,可以把这一部分整个电路都集成到FPGA中。

3 仿真结果

  仿真环境:MAX+plus II 10.0。

  仿真模拟器件:FLEX 10K系列,EPF10K10LC84-3。

  信号功能说明见表3。

表3 仿真信号说明

信号名称 功  能  说  明 CLK 模拟CPU时钟,在该仿真中设定时钟频率为10MHz WRITE 模拟CPU发出的写信号 READ 模拟CPU发出的读信号 MEMW 由EDAC电路发出的内存写信号,主要用于数据纠正后的回写 HIGH 恒为高电平,提供芯片使能信号 INT EDAC电路检测到两个以上错误时发出的中断请求信号 ERR EDAC检测到错误时发出的信号,构校验位产生一位错误时不产生该信号 CBIN[5..0] 6位校验位输入 DBIN[15..0 16位数据位输入 CBOUT[5..0

《错误检测与纠正电路的设计与实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/157424.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。