首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用VHDL实现一个简单的4位奇偶校验器?

如何用VHDL实现一个简单的4位奇偶校验器?
EN

Stack Overflow用户
提问于 2011-11-19 09:32:05
回答 4查看 19.9K关注 0票数 1

我正在学习VHDL,我正在尝试制作4位奇偶校验器。其思想是比特来自一条输入线(每个时钟脉冲一个比特),并且校验器应该找出在4比特序列中是否存在奇数个1(即1011、0100等)。如果有,则发送错误输出(例如,错误标志:错误<=´1´)。

有没有人能给我举个例子,让我研究一下它是怎么做的?

我试着在网上搜索,但我找到的所有讨论都与一些更复杂的东西有关,我无法理解它们。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-22 00:50:10

VHDL2008标准提供了一种新的xor运算符来执行此操作。比Aaron提供的传统解决方案简单得多。

代码语言:javascript
运行
复制
signal Data : std_logic_vector(3 downto 0) ;
signal Parity : std_logic ;
. . .
Parity <= xor Data ;
票数 5
EN

Stack Overflow用户

发布于 2011-11-20 10:08:53

这里假设"invec“是你的输入std_logic_vector:

代码语言:javascript
运行
复制
parity <= invec(3) xor invec(2) xor invec(1) xor invec(0);

如果它的输入大于4,那么循环可能是最好的:

代码语言:javascript
运行
复制
variable parity_v : std_logic := '0';
for i in invec'range loop:
  parity_v := parity_v xor invec(i);
end loop;
parity <= parity_v;

该循环将在合成时转换为适当的LUT值。

(我是在内存中完成此操作的;可能存在轻微的语法问题。)

票数 3
EN

Stack Overflow用户

发布于 2019-05-02 21:30:36

代码中有一个小的语法错误。应该在循环之后删除":“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8191174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档