微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA读取数据出现问题

FPGA读取数据出现问题

时间:10-02 整理:3721RD 点击:

大家好,我写了一段程序来读一个并行总线的数据,本来应该读到的是0x34,就是逻辑分析仪图里红色方框里的TED7~TED0的值,可不知道为什么会读成0xb5,程序是状态机写的,大家帮忙看看这是怎么回事?谢过!


  1. ------------------------------------------
  2. process(CLK)
  3. begin
  4. if(CLK='1' and CLK'event) then
  5. if RSTn='0' then
  6. CURRENT_STATE 'Z');
  7. TLRDYn
  8. TLRDYn 'Z');
  9. if ((not TADSn) and TLWorRn and (not TCS1n))= '1' then
  10. CURRENT_STATE
  11. --led_out   
  12. --led_out
  13. IF(TBE1n = '0') THEN
  14. CASE TEA IS
  15. WHEN ADR_tempd => tempd(15 DOWNTO 0) tempe(15 DOWNTO 0) tempf(15 DOWNTO 0) tempg(15 DOWNTO 0) temph(15 DOWNTO 0) tempi(15 DOWNTO 0) NULL;
  16. END CASE;
  17. END IF;       

  18. IF(TBE1n = '1') THEN
  19. CASE TEA IS
  20. WHEN ADR_tempd => tempd(31 DOWNTO 16) tempe(31 DOWNTO 16) tempf(31 DOWNTO 16) tempg(31 DOWNTO 16) temph(31 DOWNTO 16) tempi(31 DOWNTO 16) NULL;
  21. END CASE;
  22. END IF;
  23. --led_out
  24. --led_out
  25. CURRENT_STATE
  26. if TRDn = '0'  then   
  27. CURRENT_STATE   
  28. CURRENT_STATE
  29. IF(TBE1n = '0') THEN                     
  30. CASE TEA IS
  31. WHEN ADR_tempd => TED(15 downto 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 downto 0) 'Z');
  32. END CASE;
  33. END IF;

  34. IF(TBE1n = '1') THEN                     
  35. CASE TEA IS
  36. WHEN ADR_tempd => TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 DOWNTO 0) TED(15 downto 0) 'Z');
  37.                                         --led_out                 --多一个等待周期,让数据稳定之后再发READY
  38. CURRENT_STATE
  39. CURRENT_STATE
  40. CURRENT_STATE CURRENT_STATE <= IDLE_STATE;
  41. end case;
  42. end if;
  43. end if;
  44. end process;

复制代码




这是标准时序,应该没问题啊。


怎么了?gg什么意思?

原因是状态机跳错了状态,谢谢各位帮忙。现在已经正常了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top