📄 sdram.txt
字号:
WHEN '1' => TV_REG20<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(9)='1' THEN
--------READ DATA 2
CMD1<="111";
------NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG11<= DQ;
WHEN '1' => TV_REG21<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(10)='1' THEN
--------READ DATA 3
CMD1<="111";
------NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG12<= DQ;
WHEN '1' => TV_REG22<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(11)='1' THEN
--------READ DATA 4
CMD1<="111";
------NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG13<= DQ;
WHEN '1' => TV_REG23<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(12)='1' THEN
--------READ DATA 5
CMD1<="110";
------terminating
CASE TVREG_SEL IS
WHEN '0' => TV_REG14<= DQ;
WHEN '1' => TV_REG24<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(13)='1' THEN
--------READ DATA 6
CMD1<="110";
------ NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG15<= DQ;
WHEN '1' => TV_REG25<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(14)='1' THEN
--------READ DATA 7
CMD1<="111";
------NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG16<= DQ;
WHEN '1' => TV_REG26<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(15)='1' THEN
--------READ DATA 8
CMD1<="111";
------NOP COMMAND
CASE TVREG_SEL IS
WHEN '0' => TV_REG17<= DQ;
WHEN '1' => TV_REG27<= DQ;
WHEN OTHERS =>NULL;
end CASE;
ELSIF RE_T(16)='1' THEN
CMD1<="111";
------FOR terminating COMMAND 'S NOP COMMAND
SA1(10) <='1';
----PRECHARGE FOR ALL BANKS
ELSIF RE_T(17)='1' THEN
CMD1<="010";
-----PRECHARGE
SA1(10) <='1';
----PRECHARGE FOR ALL BANKS
ELSE
CMD1<="111";
------NOP COMMAND
SA1 <= (others => '0');
END IF;
ELSIF COM_VH_B='1' THEN
TV_REG10 <= (others => '0');
TV_REG11 <= (others => '0');
TV_REG12 <= (others => '0');
TV_REG13 <= (others => '0');
TV_REG14 <= (others => '0');
TV_REG15 <= (others => '0');
TV_REG16 <= (others => '0');
TV_REG17 <= (others => '0');
TV_REG20 <= (others => '0');
TV_REG21 <= (others => '0');
TV_REG22 <= (others => '0');
TV_REG23 <= (others => '0');
TV_REG24 <= (others => '0');
TV_REG25 <= (others => '0');
TV_REG26 <= (others => '0');
TV_REG27 <= (others => '0');
IF RE_T(2)='1' THEN
SA1(10) <='1';
----PRECHARGE FOR ALL BANKS
ELSIF RE_T(3)='1' THEN
CMD1<="010";
------PRECHARGE
SA1(10) <='1';
------PRECHARGE FOR ALL BANKS
ELSIF RE_T(5)='1' THEN
CMD1<="001";
-------AUTO REFRESH
SA1(10) <='0';
ELSE
CMD1<="111";
------NOP COMMAND
SA1 <= (others => '0');
END IF;
END IF;
END IF;
ELSIF ( RW_START='0' ) THEN
-----WRITE COMMANDAND INI_END='1'
RE_T :="00000000000000000001";
IF WR_T(15)='0' THEN
WR_T(15 DOWNTO 1):=WR_T(14 DOWNTO 0);
WR_T(0):='0';
IF WR_T(1)='1' THEN
SA1 <="0000"&WR_SDROWADD;
BA <= WR_BANK;
DQM <='0';
ELSIF WR_T(2)='1' THEN
CMD1 <="011"; ------ACTIVE
SA1 <="0000"&WR_SDROWADD;
BA <= WR_BANK;
DQM <='0';
ELSIF WR_T(4)='1' THEN
CMD1<="111"; ------NOP
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
---------read rom fisrt data
SA1(8 DOWNTO 0)<=WR_COLADD&"000";
SA1(10) <='0';
----WRITE WITHOUT AUTO PRECHARGE
BA<= WR_BANK;
DQM <='0';
ELSIF WR_T(5)='1' THEN
CMD1<="100"; ------WRITE
DQM<='0';
SA1(8 DOWNTO 0)<=WR_COLADD&"000";
SA1(10) <='0';
----WRITE WITHOUT AUTO PRECHARGE
BA<= WR_BANK;
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; -------WRITE DATA 1
ELSIF WR_T(6)='1' THEN
CMD1<="111";
------NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 2
ELSIF WR_T(7)='1' THEN
CMD1<="111";
------NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 3
ELSIF WR_T(8)='1' THEN
CMD1<="111"; ------NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 4
ELSIF WR_T(9)='1' THEN
CMD1<="111"; ------NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA5
ELSIF WR_T(10)='1' THEN
CMD1<="111"; -----NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 6
ELSIF WR_T(11)='1' THEN
CMD1<="111"; ------NOP COMMAND
DQM<='0';
WR_COLADD2 <= TEMP;
TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 7
ELSIF WR_T(12)='1' THEN
CMD1<="111"; ------NOP COMMAND
DQM<='0';
--WR_COLADD2 <= TEMP;
--TEMP :=TEMP+1;
--WR_DATA<=DATAIN; --------WRITE DATA 8
ELSIF WR_T(13)='1' THEN
CMD1<="110"; ------BURST TERMINATE COMMAND
DQM<='1'; --------for tWR=15ns
SA1(10) <='1';----PRECHARGE FOR ALL BANKS
ELSIF WR_T(14)='1' THEN
CMD1<="010"; -----PRECHARGE
DQM<='1';
SA1(10) <='1'; ----PRECHARGE FOR ALL BANKS
ELSE
CMD1<="111"; ------NOP COMMAND
DQM<='0';
SA1 <= (others => '0');
END IF;
END IF;
END IF;
END IF;
END PROCESS;
---------------------------------------------------------------------------
---------------------------------------------------------------------------
-- for tv data out .
Ptv_out: PROCESS (CLK66)
VARIABLE TEMP2 : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
VARIABLE DATA_O : STD_LOGIC_VECTOR ( 7 DOWNTO 0);
VARIABLE TEMP : STD_LOGIC_VECTOR ( 4 DOWNTO 0);
BEGIN
---- EVERY LINE COUNT FOR 912 bytes DATA,
IF CLK66'EVENT AND CLK66='1' THEN
IF COM_VH_B='1' THEN
TEMP:=(OTHERS=>'0');
TEMP2:="0100";
--(OTHERS=>'0');--"0001";-
DATA_O:=(OTHERS=>'0');
ELSE
IF CLK165='1' THEN
TEMP :=TVREG_SEL& TEMP2;
CASE TEMP IS
WHEN "00000" => DATA_O :=TV_REG20(15 DOWNTO 8);
WHEN "00001" => DATA_O :=TV_REG20( 7 DOWNTO 0);
WHEN "00010" => DATA_O :=TV_REG21(15 DOWNTO 8);
WHEN "00011" => DATA_O :=TV_REG21( 7 DOWNTO 0);
WHEN "00100" => DATA_O :=TV_REG22(15 DOWNTO 8);
WHEN "00101" => DATA_O :=TV_REG22( 7 DOWNTO 0);
WHEN "00110" => DATA_O :=TV_REG23(15 DOWNTO 8);
WHEN "00111" => DATA_O :=TV_REG23( 7 DOWNTO 0);
WHEN "01000" => DATA_O :=TV_REG24(15 DOWNTO 8);
WHEN "01001" => DATA_O :=TV_REG24( 7 DOWNTO 0);
WHEN "01010" => DATA_O :=TV_REG25(15 DOWNTO 8);
WHEN "01011" => DATA_O :=TV_REG25( 7 DOWNTO 0);
WHEN "01100" => DATA_O :=TV_REG26(15 DOWNTO 8);
WHEN "01101" => DATA_O :=TV_REG26( 7 DOWNTO 0);
WHEN "01110" => DATA_O :=TV_REG27(15 DOWNTO 8);
WHEN "01111" => DATA_O :=TV_REG27( 7 DOWNTO 0);
WHEN "10000" => DATA_O :=TV_REG10(15 DOWNTO 8);
WHEN "10001" => DATA_O :=TV_REG10( 7 DOWNTO 0);
WHEN "10010" => DATA_O :=TV_REG11(15 DOWNTO 8);
WHEN "10011" => DATA_O :=TV_REG11( 7 DOWNTO 0);
WHEN "10100" => DATA_O :=TV_REG12(15 DOWNTO 8);
WHEN "10101" => DATA_O :=TV_REG12( 7 DOWNTO 0);
WHEN "10110" => DATA_O :=TV_REG13(15 DOWNTO 8);
WHEN "10111" => DATA_O :=TV_REG13( 7 DOWNTO 0);
WHEN "11000" => DATA_O :=TV_REG14(15 DOWNTO 8);
WHEN "11001" => DATA_O :=TV_REG14( 7 DOWNTO 0);
WHEN "11010" => DATA_O :=TV_REG15(15 DOWNTO 8);
WHEN "11011" => DATA_O :=TV_REG15( 7 DOWNTO 0);
WHEN "11100" => DATA_O :=TV_REG16(15 DOWNTO 8);
WHEN "11101" => DATA_O :=TV_REG16( 7 DOWNTO 0);
WHEN "11110" => DATA_O :=TV_REG17(15 DOWNTO 8);
WHEN "11111" => DATA_O :=TV_REG17( 7 DOWNTO 0);
WHEN OTHERS => DATA_O :=(OTHERS=>'0');
END CASE;
TEMP2:= TEMP2+1;
END IF;
END IF;
IF COM_VH_B='0' THEN
DATA_OUT<=(NOT COM_VH)&'1'&(DATA_O );
ELSIF COM_VH_B='1' THEN
DATA_OUT<=(NOT COM_VH)&"000000000";
END IF;
END IF;
END PROCESS;
end RTL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -