搜索
bottom↓
回复: 7

请教下,这是一个关于密码设置和读取比较的模块

[复制链接]

出0入0汤圆

发表于 2013-4-7 12:53:56 | 显示全部楼层 |阅读模式
  1. LIBRARY IEEE;
  2. USE IEEE.std_logic_1164.ALL;
  3. ENTITY chucun IS
  4.      PORT(s0,s1,s2:IN std_logic;   b1,b2,b3,b4:IN std_logic;      
  5.               wr,rd:IN std_logic; f1,f2,f3,f4:OUT std_logic);
  6. END chucun;
  7. ARCHITECTURE F OF chucun IS
  8.      SIGNAL e11,e12,e13,e14:std_logic;
  9.      SIGNAL e21,e22,e23,e24:std_logic;
  10.      SIGNAL e31,e32,e33,e34:std_logic;
  11.      SIGNAL e41,e42,e43,e44:std_logic;
  12.      SIGNAL e51,e52,e53,e54:std_logic;
  13.      SIGNAL e61,e62,e63,e64:std_logic;
  14.      SIGNAL e71,e72,e73,e74:std_logic;
  15.      SIGNAL mid:std_logic_vector(2 DOWNTO 0);
  16. BEGIN
  17.      mid<=s2&s1&s0;
  18.      PROCESS(mid)
  19.      BEGIN
  20.           IF(wr='1')THEN             --写信号有效,写入密码存储
  21.              IF(mid="000")THEN
  22.                 e11<=b1;e12<=b2;e13<=b3;e14<=b4;
  23.                 f1<=e11;f2<=e12;f3<=e13;f4<=e14;
  24.              IF(mid="001")THEN
  25.                 e21<=b1;e22<=b2;e23<=b3;e24<=b4;
  26.                 f1<=e21;f2<=e22;f3<=e23;f4<=e24;
  27.              IF(mid="010")THEN
  28.                 e31<=b1;e32<=b2;e33<=b3;e34<=b4;
  29.                 f1<=e31;f2<=e32;f3<=e33;f4<=e34;
  30.              IF(mid="011")THEN
  31.                 e41<=b1;e42<=b2;e43<=b3;e44<=b4;
  32.                 f1<=e41;f2<=e42;f3<=e33;f4<=e34;
  33.              IF(mid="100")THEN
  34.                 e51<=b1;e52<=b2;e53<=b3;e54<=b4;
  35.                 f1<=e51;f2<=e52;f3<=e53;f4<=e54;
  36.              IF(mid="101")THEN
  37.                 e61<=b1;e62<=b2;e63<=b3;e64<=b4;
  38.                 f1<=e61;f2<=e62;f3<=e63;f4<=e64;
  39.              ELSE
  40.                 e71<=b1;e72<=b2;e73<=b3;e74<=b4;
  41.                 f1<=e71;f2<=e72;f3<=e73;f4<=e74;
  42.              END IF;
  43.           ELSIF(rd='1')THEN                 --读信号有效,读出密码比较
  44.              IF(mid="000")THEN
  45.                 f1<=e11;f2<=e12;f3<=e13;f4<=e14;
  46.              IF(mid="001")THEN
  47.                 f1<=e21;f2<=e22;f3<=e23;f4<=e24;
  48.              IF(mid="010")THEN
  49.                 f1<=e31;f2<=e32;f3<=e33;f4<=e34;
  50.              IF(mid="100")THEN
  51.                 f1<=e41;f2<=e42;f3<=e43;f4<=e44;
  52.              IF(mid="101")THEN
  53.                 f1<=e51;f2<=e52;f3<=e53;f4<=e54;
  54.              IF(mid="110")THEN
  55.                 f1<=e61;f2<=e62;f3<=e63;f4<=e64;
  56.              ELSE
  57.                 f1<=e71;f2<=e72;f3<=e73;f4<=e74;
  58.               END IF;
  59.              END IF;
  60.             END IF;
  61.            END IF;
  62.           END IF;
  63.          END IF;
  64.         END IF;
  65.        END IF;
  66.       END IF;
  67.      END IF;
  68.     END IF;
  69.    END IF;
  70.   END PROCESS;
  71. END F;
复制代码
此程序有什么问题,我在仿真的时候。当写信号高电平,有效输出。但是当读信号有效时,输出一直处于低电平。也就是等于最后一段的程序貌似没起到作用。
另,我把WR=1和RD=1的语句 掉下顺序后仿真。。貌似都没效了  这是为什么啊???
s0-s2 是计数器模块的,用于地址选择

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-4-7 14:55:49 | 显示全部楼层
IF用的有点多了吧

出0入0汤圆

 楼主| 发表于 2013-4-7 15:25:00 | 显示全部楼层
Dionysus 发表于 2013-4-7 14:55
IF用的有点多了吧

新手,完全不会。。就稍微看的点懂。。。
现在是为了做毕设。

出0入0汤圆

发表于 2013-4-7 16:06:05 | 显示全部楼层
HDL很多年没用过了,不知道说得对不对:
1. 第18行,PROCESS()里只需要mid?不要加wr/rd?  (这个不确定)
2. wr=1时,IF () THEN你用了6个,但是END IF只有第42行,问题应该出在这里。你要把58行以后的END IF移5行放在42~43行之间。

出0入0汤圆

 楼主| 发表于 2013-4-7 16:16:13 | 显示全部楼层
sme 发表于 2013-4-7 16:06
HDL很多年没用过了,不知道说得对不对:
1. 第18行,PROCESS()里只需要mid?不要加wr/rd?  (这个不确定) ...

我这就去试试。。谢谢

出0入0汤圆

发表于 2013-4-7 16:40:49 | 显示全部楼层
chaepon 发表于 2013-4-7 16:16
我这就去试试。。谢谢

PROCESS(mid)
     BEGIN
          IF(wr='1')THEN             --写信号有效,写入密码存储
             IF(mid="000")THEN
                e11<=b1;e12<=b2;e13<=b3;e14<=b4;
                f1<=e11;f2<=e12;f3<=e13;f4<=e14;
             ELSIF(mid="001")THEN
                e21<=b1;e22<=b2;e23<=b3;e24<=b4;
                f1<=e21;f2<=e22;f3<=e23;f4<=e24;
             ELSIF(mid="010")THEN
                e31<=b1;e32<=b2;e33<=b3;e34<=b4;
                f1<=e31;f2<=e32;f3<=e33;f4<=e34;
             ELSIF(mid="011")THEN
                e41<=b1;e42<=b2;e43<=b3;e44<=b4;
                f1<=e41;f2<=e42;f3<=e33;f4<=e34;
             ELSIF(mid="100")THEN
                e51<=b1;e52<=b2;e53<=b3;e54<=b4;
                f1<=e51;f2<=e52;f3<=e53;f4<=e54;
             ELSIF(mid="101")THEN
                e61<=b1;e62<=b2;e63<=b3;e64<=b4;
                f1<=e61;f2<=e62;f3<=e63;f4<=e64;
             ELSE
                e71<=b1;e72<=b2;e73<=b3;e74<=b4;
                f1<=e71;f2<=e72;f3<=e73;f4<=e74;
             END IF;
          ELSIF(rd='1')THEN                 --读信号有效,读出密码比较
             IF(mid="000")THEN
                f1<=e11;f2<=e12;f3<=e13;f4<=e14;
             ELSIF(mid="001")THEN
                f1<=e21;f2<=e22;f3<=e23;f4<=e24;
             ELSIF(mid="010")THEN
                f1<=e31;f2<=e32;f3<=e33;f4<=e34;
             ELSIF(mid="100")THEN
                f1<=e41;f2<=e42;f3<=e43;f4<=e44;
             ELSIF(mid="101")THEN
                f1<=e51;f2<=e52;f3<=e53;f4<=e54;
             ELSIF(mid="110")THEN
                f1<=e61;f2<=e62;f3<=e63;f4<=e64;
             ELSE
                f1<=e71;f2<=e72;f3<=e73;f4<=e74;
              END IF;
             END IF;
  END PROCESS;

前面看错了,可能这样改吧

出0入0汤圆

 楼主| 发表于 2013-4-7 18:19:31 | 显示全部楼层
sme 发表于 2013-4-7 16:40
PROCESS(mid)
     BEGIN
          IF(wr='1')THEN             --写信号有效,写入密码存储

你就把IF变成elsif?

出0入0汤圆

发表于 2013-4-7 20:59:58 | 显示全部楼层
chaepon 发表于 2013-4-7 18:19
你就把IF变成elsif?

是的。你仿过没?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表