|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 hayu111 于 2016-9-14 17:42 编辑
library ieee;
use ieee.std_logic_1164.all;
entity getdata is
port (
DATA_IN : in bit_vector(15 downto 0);//数据输入
CLK_IN : in std_logic;//时钟
DATA_OUTT : out bit_vector(47 downto 0);
DATA_OUTID : out bit_vector(15 downto 0);
EN : out std_logic;
EN1 : out std_logic
);
end getdata;
architecture bhv of getdata is
type DATA_PROCESS_STATES is (DATA3,DATA2,DATA1,DATA0);
signal DATA_PROCESS_STATE : DATA_PROCESS_STATES :=DATA3;
begin
process (DATA_IN,CLK_IN)
variable BISS_DATA : bit_vector (47 downto 0);
variable CP_DATA : bit_vector (15 downto 0);
begin
if (CLK_IN'event and CLK_IN='1') then
case DATA_PROCESS_STATE is
when DATA3 =>
EN1 <= '0';
CP_DATA := DATA_IN; // 为什么CP_DATA 、DATA_OUTID 接受不到数据????
DATA_OUTID <= CP_DATA ;
EN1 <= '1';
DATA_PROCESS_STATE <= DATA2;
when DATA2 =>
EN <= '0';
BISS_DATA(47 downto 32) := DATA_IN;// BISS_DATA可以接受到DATA_IN的数据
DATA_COUT := DATA_COUT + 1;
DATA_PROCESS_STATE <= DATA1;
when DATA1 =>
BISS_DATA(31 downto 16) := DATA_IN;
DATA_COUT := DATA_COUT + 1;
DATA_PROCESS_STATE <= DATA0;
when DATA0 =>
BISS_DATA(15 downto 0) := DATA_IN;
DATA_COUT := DATA_COUT + 1;
DATA_OUTT <= BISS_DATA SRL 3;--移位
EN <= '1';
DATA_PROCESS_STATE <= DATA2; //只要这里的状态返回到DATA3状态,CP_DATA 、DATA_OUTID 是可以接受到数据,但是如果只让状态DATA3执行一次的话CP_DATA 的值就接受不到。
when others => null;
end case;
end if;
end process;
end bhv;
每次编译6分钟,调试到我爆炸了,用signaltap仿真有BISS_DATA收到的数据、没有CP_DATA的数据,一直是0x0000
。。。。。。。。要放弃了 |
|