奇偶校验的VHDL问题

达安·穆哈(Daan Mouha)

我正在尝试根据DCF77信号制作原子钟。现在,我正在尝试对向量进行偶校验。可以的话,可以将正确的数据传递给另一个向量。现在我的问题是,它不会执行奇偶校验(内部带有xor的for循环),对我来说代码是正确的,并且编译没有错误。

parity: process(reset, clk, start)
begin
    if((reset /= '1') or (start /= '1')) then
        if(falling_edge(clk)) then
            if(count >= 58 and start = '0' and data(38) = '1' and data /= x"1FFFFFFFFFFFFFF") then -- if every data has arrived and minute mark1 = 1                
                par <= '0';
                for I in 37 downto 31 loop -- loop over every bit of the minutes and count how many logical 1 bits there are
                    par <= par xor data(I); -- check minute parity
                end loop;

                if((par = '1' and data(30) = '1') or (par = '0' and data(30) = '0')) then -- if the minute parity is correct then proceed to hour parity else reset the whole time data
                    par <= '0';
                    for I in 29 downto 24 loop -- loop over every bit of the minutes and count how many logical 1 bits there are
                        par <= par xor data(I); -- check hour parity
                    end loop;

                    if((par = '1' and data(23) = '1') or (par = '0' and data(23) = '0')) then  -- if the hour parity is correct then proceed put data to a seperate vector else reset the whole time data
                        dataTime <= data(37 downto 23);
                    else
                        dataTime <= (others => '1'); -- Error
                    end if;
                else
                    dataTime <= (others => '1'); -- Error
                end if;

                par <= '0';
                for I in 22 downto 1 loop -- loop over every bit of the date and count how many logical 1 bits there are
                    par <= par xor data(I); -- check date parity
                end loop;

                if((par = '1' and data(0) = '1') or (par = '0' and data(0) = '0')) then
                    dataDate <= data(22 downto 0); -- load the date data in to a seperate vector
                else
                    dataDate <= (others => '1'); -- Error
                end if;
            else
                dataTime <= (others => '1');
                dataDate <= (others => '1');
            end if;
        end if;
    else
        dataTime <= (others => '1');
        dataDate <= (others => '1');
        par <= '0';
    end if;
end process;

请帮忙

莫滕·齐默(Morten Zilmer)

奇偶校验是使用的信号计算的par,但在VHDL中,直到增量周期之后,才更新信号的读取值。因此,仅在时钟沿进行评估的过程就不可能通过环路中的信号进行累加。

一种可能性是制作par一个过程变量,并:=用于分配给该变量,因为VHDL变量会立即更新以进行读取。代码:

parity: process(reset, clk, start)
  variable par : std_logic;
begin
    ...
                par := '0';
                for I in 37 downto 31 loop
                    par := par xor data(I);
                end loop;
    ...

par := '0';重置部分中的final是不必要的,因为par它在每次迭代之前都会初始化。

VHDL-2002中的一种替代方法是使用以下代码创建归约XOR函数:

  function xor_reduct(slv : in std_logic_vector) return std_logic is
    variable res_v : std_logic;
  begin
    res_v := '0';
    for i in slv'range loop
      res_v := res_v xor slv(i);
    end loop;
    return res_v;
  end function;

begin

    parity: process(reset, clk, start)
      variable par : std_logic;
    begin
        ...
                    par := xor_reduct(data(37 downto 31));

在VHDL-2008(如果支持)中,它是:

par := xor data(37 downto 31);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有或不带有奇偶校验的RS232字长

来自分类Dev

RS232:要奇偶校验还是不奇偶校验?

来自分类Dev

汉明码:奇偶校验位数

来自分类Dev

CPU上的奇偶校验标志的作用是什么?

来自分类Dev

随着奇偶校验矩阵密度的增加,LDPC行为

来自分类Dev

c如何返回从二进制文件读取的char的奇偶校验

来自分类Dev

CASE奇偶校验器

来自分类Dev

加密算法和按位奇偶校验

来自分类Dev

计算二进制字的奇偶校验

来自分类Dev

奇偶校验错误:它未连接到EWF的Volta测试网络

来自分类Dev

查找奇偶校验离群值Javascript

来自分类Dev

使用“模”的奇偶校验

来自分类Dev

通过元素原始位置的奇偶校验来稳定分区std :: vector

来自分类Dev

将绿色和蓝色值的奇偶校验检查为图像

来自分类Dev

C中的奇偶校验位

来自分类Dev

汉明码校验奇偶校验

来自分类Dev

奇偶校验如何在RAID-5阵列上工作?

来自分类Dev

RAID5与RAID4浮动奇偶校验的目的

来自分类Dev

使用屏幕访问串行端口时如何设置奇偶校验位

来自分类Dev

如何检查值是否具有偶数奇偶校验或奇数校验?

来自分类Dev

快速了解位向量的奇偶校验的方法

来自分类Dev

十六进制和字符串上的Python XOR(奇偶校验功能)

来自分类Dev

RAID 5奇偶校验位-恢复数据

来自分类Dev

哪种方法可以更快地确定奇偶校验?

来自分类Dev

如何使用奇偶校验矩阵进行编码?

来自分类Dev

这个位序列的正确奇偶校验是什么?

来自分类Dev

如何计算偶数磁盘的 RAID 5 奇偶校验?

来自分类Dev

“奇偶校验”是否只能在限定范围内校验数据的正确性?

来自分类Dev

奇偶校验的 stty 串行端口设置不持久

Related 相关文章

热门标签

归档