搜索
bottom↓
回复: 0

FPGA中的信号诡异现象,求高手指点!

[复制链接]

出0入0汤圆

发表于 2011-4-21 12:10:28 | 显示全部楼层 |阅读模式
麻烦高手帮我看一下这个程序(附在下面),仿真时我把plagb_full_n一直设为高电平,plagc_empty_n一直设为低电平,clk时钟周期设为20ns,但是data口总是0,2,4,6……这样的递增,可是我在程序里明明是让它0,1,2,3,4……这样每次递增1啊,这是为什么呢?
    另外我想问一下,如果进程执行过程中,敏感信号又变化了,进程还没执行完,会不会重新复位,还是等到进程执行完了再回到进程开始处?
    LIBRARY ieee;

USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
USE ieee.std_logic_1164.all;

entity sram is
        generic
        (
                IDLE        : INTEGER :=        0;
                STATE1  : INTEGER :=    1;
                STATE2  : INTEGER :=    2;
                STATE3  : INTEGER :=    3;
                STATE4  : INTEGER :=    4;
               
                DELAY0  : INTEGER :=    5;
                DELAY1  : INTEGER :=    6
               
               
        );


        port
        (
                -- Input ports
                clk        : in  STD_LOGIC;
                plagb_full_n        : in  STD_LOGIC;
                plagc_empty_n : in  STD_LOGIC;
               
               
               
                -- Output ports
                slwr_n        : out STD_LOGIC;
                data        : out STD_LOGIC_VECTOR(7 DOWNTO 0);
                fifoaddr : out STD_LOGIC_VECTOR(1 DOWNTO 0);
                pktend_n : out STD_LOGIC
               
        );
end sram;
       
architecture arc_sram of sram is

        -- Declarations (optional)
        SIGNAL delay: INTEGER:=0 ;
        SIGNAL cstate,nstate: INTEGER:=IDLE;
        SIGNAL data_r: STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000";
        SIGNAL fifoaddr_r: STD_LOGIC_VECTOR(1 DOWNTO 0):="10";
        SIGNAL slwr_n_r: STD_LOGIC:='1';
begin
       PROCESS(clk,cstate,plagb_full_n,plagc_empty_n)
          BEGIN
            IF (clk'EVENT AND clk='1') THEN
                  cstate<=nstate;
                  
                  CASE cstate IS
                    WHEN IDLE=>
                               data<="00000000";
                               pktend_n<='1';
                              
                               fifoaddr<="10";
                               IF( plagc_empty_n='0')THEN
                                  nstate<=STATE1;
                               ELSE nstate<=IDLE;
                               END IF;
                              
                              
                    WHEN STATE1=>fifoaddr<="10";
                                 nstate<=STATE2;
                              
                     WHEN STATE2=>
                                   IF( plagb_full_n='1') THEN
                                     slwr_n<='1';
                                     delay<=0;
                                     nstate<=STATE3;
                                   ELSE nstate<=IDLE;
                                   END IF;
                                   
                     WHEN STATE3=> data<=data_r;
                                   slwr_n<='0';
                                   nstate<=DELAY0;
                                 
                                   
                     WHEN DELAY0=> delay<=delay+1;
                                   nstate<=DELAY1;
                     WHEN DELAY1=>IF(delay=2) THEN
                                     slwr_n<='1';
                                     nstate<=STATE4;
                                   ELSE nstate<=DELAY0;
                                   END IF;             //DELAY0和DELAY1起到延时作用再进入STATE4
                              
                      WHEN STATE4=>data_r<=data_r+1;//明明每次递增1
                                   nstate<=STATE2;
                      WHEN others=>nstate<=IDLE;
                                   
                  END CASE;
                  
            END IF;      
               
        END PROCESS;
end arc_sram;

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

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

本版积分规则

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

GMT+8, 2024-7-24 15:22

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

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