📄 outsel.vhd
字号:
library IEEE;
use IEEE.std_logic_1164.all;
entity OUTSEL is
port(
ID :in std_logic_vector(7 downto 0);
CD :in std_logic_vector(7 downto 0);
SF :in std_logic_vector(7 downto 0);
D0F :in std_logic_vector(7 downto 0);
D1F :in std_logic_vector(7 downto 0);
D2F :in std_logic_vector(7 downto 0);
D3F :in std_logic_vector(7 downto 0);
D4F :in std_logic_vector(7 downto 0);
D5F :in std_logic_vector(7 downto 0);
D6F :in std_logic_vector(7 downto 0);
D7F :in std_logic_vector(7 downto 0);
ALM :in std_logic_vector(7 downto 0);
ADDR :in std_logic_vector(2 downto 0);
DMODE :in std_logic;
MANUAL :in std_logic;
DS40 :in std_logic;
OUTPORT :out std_logic_vector(39 downto 0)
);
end OUTSEL;
architecture MAIN of OUTSEL is
signal FRAMELENGTH :std_logic_vector(3 downto 0);
begin
process(ID(3 downto 0))
variable RQID :std_logic_vector(3 downto 0);
begin
RQID:=ID(3 downto 0);
case RQID is
when x"2"=>
FRAMELENGTH<=x"0";
when x"6"|x"D"=>
FRAMELENGTH<=x"1";
when x"0"|x"1"|x"7"|x"8"|x"C"=>
FRAMELENGTH<=x"2";
when x"4"|x"9"|x"B"|x"E"|x"F"=>
FRAMELENGTH<=x"3";
when x"5"|x"A"=>
FRAMELENGTH<=x"5";
when x"3" =>
FRAMELENGTH<=x"7";
when others=>
FRAMELENGTH<=x"0";
end case;
end process;
OUTPORT(7 downto 0)<=
D5F when (MANUAL='0' and DS40='1' and (FRAMELENGTH=x"5" or FRAMELENGTH=x"7"))else
D0F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"1") else
D7F when (MANUAL='1' and DMODE='1' and ADDR="101" and FRAMELENGTH=x"7") else
D5F when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH>=x"5") else
SF when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH=x"2") else
D3F when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH/=x"0") else
D0F when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH=x"1") else
SF when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH=x"0") else
D1F when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH>=x"2") else
CD when (MANUAL='1' and ADDR="001") else
ID when (MANUAL='1' and ADDR="000") else
D7F when (MANUAL='1' and DMODE='0' and ADDR="011" and FRAMELENGTH=x"7") else
SF when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"2") else
D3F when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH/=x"0") else
x"00";
OUTPORT(15 downto 8)<=
D6F when (MANUAL='0' and DS40='1' and FRAMELENGTH=x"7") else
D1F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"2") else
ALM when (MANUAL='1' and DMODE='1' and ADDR="110") else
SF when (MANUAL='1' and DMODE='1' and ADDR="101" and FRAMELENGTH=x"7") else
SF when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH=x"5") else
D6F when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH=x"7") else
SF when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH=x"3") else
D4F when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH>=x"4") else
D2F when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH>=x"2") else
SF when (MANUAL='1' and DMODE='1' and ADDR="001" and FRAMELENGTH=x"1") else
D0F when (MANUAL='1' and DMODE='1' and ADDR="001" and FRAMELENGTH/=x"1") else
SF when (MANUAL='1' and DMODE='0' and ADDR="011" and FRAMELENGTH=x"7") else
D4F when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH>=x"4") else
SF when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"3") else
SF when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH=x"1") else
D0F when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH/=x"1") else
x"00";
OUTPORT(23 downto 16)<=
D7F when (MANUAL='0' and DS40='1' and FRAMELENGTH=x"7") else
D2F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"1")else
D5F when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH>=x"4") else
SF when (MANUAL='1' and DMODE='0' and ADDR="001" and ID(3 downto 0)=x"2") else
D0F when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH=x"1") else
D1F when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH/=x"1") else
x"00";
OUTPORT(31 downto 24)<=
D3F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"3") else
ALM when (MANUAL='1' and DMODE='0' and ADDR="011") else
SF when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"5") else
D6F when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"7") else
D2F when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH>=x"2") else
x"00";
OUTPORT(39 downto 32)<=
ALM when (MANUAL='0' and DS40='1') else
D4F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"4") else
x"00";
end MAIN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -