打印

3b4b编码VHDL实现问题(带程序)

[复制链接]
3466|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 well915 于 2013-4-11 09:08 编辑

各位大神,小弟急需求助,下面是我自己编的一段vhdl程序,具体功能为:输入3bit数据,编码为4bit输出数据,4bit数据的编码根据r的值确定(0或1),如果r=0,那第一组输出(1的个数>=0的个数),否则输出另一组,最后根据此次输出的4bit数据中的1和0的个数,确定下次r的值(1和0的个数相等,则r不变;如果不等,则r取反)。下面的程序我运行没问题,但是仿真结果不对,求大神指点,感激不尽,

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;

ENTITY encoder_3b4b IS
        PORT
        (
                din:IN std_logic_vector(0 TO 2);
                clk:IN std_logic;
                --rd_in:IN std_logic:='0';
                rd_out:OUT std_logic;
                dout:OUT std_logic_vector(0 TO 3)
        );
END encoder_3b4b;
        
ARCHITECTURE behave OF encoder_3b4b IS
SIGNAL r:std_logic:='0';
SIGNAL dout1:std_logic_vector(0 TO 3);
BEGIN
encoder_3b4b_pro:
        PROCESS(clk)
        VARIABLE temp:std_logic;
        BEGIN
                 temp:='1';
                IF(rising_edge(clk))THEN
                        IF(r='0')THEN
                                CASE din IS
                                WHEN"000"=> dout1<="1011";
                                WHEN"001"=> dout1<="1001";
                                WHEN"010"=> dout1<="0101";
                                WHEN"011"=> dout1<="1100";
                                WHEN"100"=> dout1<="1101";
                                WHEN"101"=> dout1<="1010";
                                WHEN"110"=> dout1<="0110";
                                WHEN"111"=> dout1<="1110";
                                END CASE;
                        ELSE
                                CASE din IS
                                WHEN"000"=> dout1<="0100";
                                WHEN"001"=> dout1<="1001";
                                WHEN"010"=> dout1<="0101";
                                WHEN"011"=> dout1<="0011";
                                WHEN"100"=> dout1<="0010";
                                WHEN"101"=> dout1<="1010";
                                WHEN"110"=> dout1<="0110";
                                WHEN"111"=> dout1<="0001";
                                END CASE;
                        END IF;
                FOR i IN 0 TO 3 LOOP                --对4bit数据进行奇偶校验(temp=0说明4bit中有奇数个1,即0和1的个数不等,temp=1说明有偶数个1,即4bit中0和1的个数相等)        
                        temp:=temp XOR dout1(i);
                END LOOP;
                        IF(temp='0')THEN        --判断4bit数据中1的个数是否为奇数(通过奇偶校验来检验编码后的4bit数据中的1和0的个数是否相等)
                                r<=NOT r;                        --如果0和1的个数不相等,则r取反
                        ELSE
                                r<=r;
                        END IF;                                        --如果0和1的个数相等,r不变               
                END IF;
                dout<=dout1;
                rd_out<=r;
        END PROCESS encoder_3b4b_pro;
END behave;
                        

0CZ5RFS%$E~SBE5G3D9NRKC.jpg (47.88 KB )

0CZ5RFS%$E~SBE5G3D9NRKC.jpg

相关帖子

沙发
ahljj| | 2013-4-7 20:05 | 只看该作者
。。。。。

使用特权

评论回复
板凳
qin552011373| | 2013-4-7 22:51 | 只看该作者
帮顶

使用特权

评论回复
地板
GoldSunMonkey| | 2013-4-7 23:37 | 只看该作者
贴仿真的,什么叫运行没有问题,仿真不行?电路上测试没有问题?

使用特权

评论回复
5
well915|  楼主 | 2013-4-10 09:42 | 只看该作者
GoldSunMonkey 发表于 2013-4-7 23:37
贴仿真的,什么叫运行没有问题,仿真不行?电路上测试没有问题?

猴哥,我是新手,就是编译没问题,可能是逻辑上有问题,不知道怎么样证,求猴哥指点

使用特权

评论回复
6
jlass| | 2013-4-10 17:03 | 只看该作者
把仿真图贴出来

使用特权

评论回复
7
GoldSunMonkey| | 2013-4-10 21:55 | 只看该作者
well915 发表于 2013-4-10 09:42
猴哥,我是新手,就是编译没问题,可能是逻辑上有问题,不知道怎么样证,求猴哥指点 ...

把仿真图贴出来

使用特权

评论回复
8
well915|  楼主 | 2013-4-11 09:10 | 只看该作者
GoldSunMonkey 发表于 2013-4-10 21:55
把仿真图贴出来

猴哥,仿真图已贴,你看看吧,dout的输出不对,rd_out直接没固定值,求解释,麻烦了

使用特权

评论回复
9
小嘿| | 2013-4-11 13:41 | 只看该作者
不要用loop

使用特权

评论回复
10
GoldSunMonkey| | 2013-4-11 17:00 | 只看该作者
没有temp信号啊

使用特权

评论回复
11
well915|  楼主 | 2013-4-15 09:35 | 只看该作者
小嘿 发表于 2013-4-11 13:41
不要用loop

那我该用什么?我是菜鸟,会的不是很多

使用特权

评论回复
12
well915|  楼主 | 2013-4-15 09:36 | 只看该作者
GoldSunMonkey 发表于 2013-4-11 17:00
没有temp信号啊

temp我定义的是变量

使用特权

评论回复
13
GoldSunMonkey| | 2013-4-16 23:56 | 只看该作者
well915 发表于 2013-4-15 09:36
temp我定义的是变量

那也得贴出来啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

51

帖子

0

粉丝