数据分配
没什么技巧的,出来都是大量的mux,64到64还好,直接写吧
cout(0) <= (datain(0) and reg0(0)) or (datain(1) and reg0(1)) or (datain(2) and reg0(2)) or (datain(3) and reg0(3)) or
(datain(4) and reg0(4)) or (datain(5) and reg0(5)) or (datain(6) and reg0(6)) or (datain(7) and reg0(7)) or
(datain(8) and reg0(8)) or (datain(9) and reg0(9)) or (datain(10) and reg0(10)) or (datain(11) and reg0(11)) or
(datain(12) and reg0(12)) or (datain(13) and reg0(13)) or (datain(14) and reg0(14)) or (datain(15) and reg0(15)) or
(datain(16) and reg0(16)) or (datain(17) and reg0(17)) or (datain(18) and reg0(18)) or (datain(19) and reg0(19)) or
(datain(20) and reg0(20)) or (datain(21) and reg0(21)) or (datain(22) and reg0(22)) or (datain(23) and reg0(23)) or
(datain(24) and reg0(24)) or (datain(25) and reg0(25)) or (datain(26) and reg0(26)) or (datain(27) and reg0(27)) or
(datain(28) and reg0(28)) or (datain(29) and reg0(29)) or (datain(30) and reg0(30)) or (datain(31) and reg0(31)) or
(datain(32) and reg0(32)) or (datain(33) and reg0(33)) or (datain(34) and reg0(34)) or (datain(35) and reg0(35)) or
(datain(36) and reg0(36)) or (datain(37) and reg0(37)) or (datain(38) and reg0(38)) or (datain(39) and reg0(39)) or
(datain(40) and reg0(40)) or (datain(41) and reg0(41)) or (datain(42) and reg0(42)) or (datain(43) and reg0(43)) or
(datain(44) and reg0(44)) or (datain(45) and reg0(45)) or (datain(46) and reg0(46)) or (datain(47) and reg0(47)) or
(datain(48) and reg0(48)) or (datain(49) and reg0(49)) or (datain(50) and reg0(50)) or (datain(51) and reg0(51)) or
(datain(52) and reg0(52)) or (datain(53) and reg0(53)) or (datain(54) and reg0(54)) or (datain(55) and reg0(55)) or
(datain(56) and reg0(56)) or (datain(57) and reg0(57)) or (datain(58) and reg0(58)) or (datain(59) and reg0(59)) or
(datain(60) and reg0(60)) or (datain(61) and reg0(61)) or (datain(62) and reg0(62)) or (datain(63) and reg0(63)) ;
我用64个上面相同的结构,但是我的资源消耗太大了,写完了这个,芯片就不能干什么事了
什么芯片? fpga吗,应该不会啊,64个64输入选择器吗,规模差不多3000门左右,很小的东西了
通过单片机与FPGA总线配置输出规则的寄存器,可以实现输出规则的不同!

2000个lut,确实够小的,这种选择没什么技巧的,除非你能对设计要求有调整,比如不象现在这么自由的选择,只有有限的组合之类的
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity mult_select is port
(clk :in std_logic;
CS :in std_logic;
WE :in std_logic;
OE :in std_logic;
Adr :in std_logic_vector(11 downto 0);
datain :in std_logic_vector(63 downto 0);
sys_Di :in std_logic_vector(15 downto 0);
sys_Do ut std_logic_vector(15 downto 0);
cout ut std_logic_vector(63 downto 0)
);
end mult_select;
architecture behave of mult_select is
component mult port
(datain :in std_logic_vector(63 downto 0);
sel :in std_logic_vector(63 downto 0);
cout ut std_logic
);
end component;
component rs port
(clk :in std_logic;
rst :in std_logic;
srst :in std_logic;
up :in std_logic;
din :in std_logic;
qout :out std_logic
);
end component;
signal cnt :std_logic_vector(3 downto 0);
signal WE_down :std_logic;
signal temp :std_logic_vector(15 downto 0);
signal data_reg :std_logic_vector(63 downto 0);
signal reg64 :std_logic_vector(5 downto 0);
signal reg0,reg1,reg2,reg3,reg4,reg5,reg6,reg7 :std_logic_vector(5 downto 0);
signal reg8,reg9,reg10,reg11,reg12,reg13,reg14,reg15 :std_logic_vector(5 downto 0);
signal reg16,reg17,reg18,reg19,reg20,reg21,reg22,reg23 :std_logic_vector(5 downto 0);
signal reg24,reg25,reg26,reg27,reg28,reg29,reg30,reg31 :std_logic_vector(5 downto 0);
signal reg32,reg33,reg34,reg35,reg36,reg37,reg38,reg39 :std_logic_vector(5 downto 0);
signal reg40,reg41,reg42,reg43,reg44,reg45,reg46,reg47 :std_logic_vector(5 downto 0);
signal reg48,reg49,reg50,reg51,reg52,reg53,reg54,reg55 :std_logic_vector(5 downto 0);
signal reg56,reg57,reg58,reg59,reg60,reg61,reg62,reg63 :std_logic_vector(5 downto 0);
begin
-- cout <=datain ;
-- cout <=cout_reg;
-- data_reg <=datain ;
-- WE_adr <= WE or CS ;
--detector1 : rs
--port map (
-- clk => clk,
-- rst => '0',
-- srst => '0',
-- up => '0',
-- din => WE_adr,
-- qout => WE_down
-- );
--------------------------------------------------------------------------
sys_Do <= temp when OE ='0' else
"ZZZZZZZZZZZZZZZZ";
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"300" => reg1(5 downto 0) <= sys_Di(5 downto 0);
when X"302" => reg2(5 downto 0) <= sys_Di(5 downto 0);
when X"304" => reg3(5 downto 0) <= sys_Di(5 downto 0);
when X"306" => reg4(5 downto 0) <= sys_Di(5 downto 0);
when X"308" => reg5(5 downto 0) <= sys_Di(5 downto 0);
when X"30a" => reg6(5 downto 0) <= sys_Di(5 downto 0);
when X"30c" => reg7(5 downto 0) <= sys_Di(5 downto 0);
when X"30e" => reg8(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"310" => reg9(5 downto 0) <= sys_Di(5 downto 0);
when X"312" => reg10(5 downto 0) <= sys_Di(5 downto 0);
when X"314" => reg11(5 downto 0) <= sys_Di(5 downto 0);
when X"316" => reg12(5 downto 0) <= sys_Di(5 downto 0);
when X"318" => reg13(5 downto 0) <= sys_Di(5 downto 0);
when X"31a" => reg14(5 downto 0) <= sys_Di(5 downto 0);
when X"31c" => reg15(5 downto 0) <= sys_Di(5 downto 0);
when X"31e" => reg16(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"320" => reg17(5 downto 0) <= sys_Di(5 downto 0);
when X"322" => reg18(5 downto 0) <= sys_Di(5 downto 0);
when X"324" => reg19(5 downto 0) <= sys_Di(5 downto 0);
when X"326" => reg20(5 downto 0) <= sys_Di(5 downto 0);
when X"328" => reg21(5 downto 0) <= sys_Di(5 downto 0);
when X"32a" => reg22(5 downto 0) <= sys_Di(5 downto 0);
when X"32c" => reg23(5 downto 0) <= sys_Di(5 downto 0);
when X"32e" => reg24(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"330" => reg25(5 downto 0) <= sys_Di(5 downto 0);
when X"332" => reg26(5 downto 0) <= sys_Di(5 downto 0);
when X"334" => reg27(5 downto 0) <= sys_Di(5 downto 0);
when X"336" => reg28(5 downto 0) <= sys_Di(5 downto 0);
when X"338" => reg29(5 downto 0) <= sys_Di(5 downto 0);
when X"33a" => reg30(5 downto 0) <= sys_Di(5 downto 0);
when X"33c" => reg31(5 downto 0) <= sys_Di(5 downto 0);
when X"33e" => reg32(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"340" => reg33(5 downto 0) <= sys_Di(5 downto 0);
when X"342" => reg34(5 downto 0) <= sys_Di(5 downto 0);
when X"344" => reg35(5 downto 0) <= sys_Di(5 downto 0);
when X"346" => reg36(5 downto 0) <= sys_Di(5 downto 0);
when X"348" => reg37(5 downto 0) <= sys_Di(5 downto 0);
when X"34a" => reg38(5 downto 0) <= sys_Di(5 downto 0);
when X"34c" => reg39(5 downto 0) <= sys_Di(5 downto 0);
when X"34e" => reg40(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"350" => reg41(5 downto 0) <= sys_Di(5 downto 0);
when X"352" => reg42(5 downto 0) <= sys_Di(5 downto 0);
when X"354" => reg43(5 downto 0) <= sys_Di(5 downto 0);
when X"356" => reg44(5 downto 0) <= sys_Di(5 downto 0);
when X"358" => reg45(5 downto 0) <= sys_Di(5 downto 0);
when X"35a" => reg46(5 downto 0) <= sys_Di(5 downto 0);
when X"35c" => reg47(5 downto 0) <= sys_Di(5 downto 0);
when X"35e" => reg48(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"360" => reg49(5 downto 0) <= sys_Di(5 downto 0);
when X"362" => reg50(5 downto 0) <= sys_Di(5 downto 0);
when X"364" => reg51(5 downto 0) <= sys_Di(5 downto 0);
when X"366" => reg52(5 downto 0) <= sys_Di(5 downto 0);
when X"368" => reg53(5 downto 0) <= sys_Di(5 downto 0);
when X"36a" => reg54(5 downto 0) <= sys_Di(5 downto 0);
when X"36c" => reg55(5 downto 0) <= sys_Di(5 downto 0);
when X"36e" => reg56(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
if(WE='1') and (CS='0') then
case Adr(11 downto 0) is
when X"370" => reg57(5 downto 0) <= sys_Di(5 downto 0);
when X"372" => reg58(5 downto 0) <= sys_Di(5 downto 0);
when X"374" => reg59(5 downto 0) <= sys_Di(5 downto 0);
when X"376" => reg60(5 downto 0) <= sys_Di(5 downto 0);
when X"378" => reg61(5 downto 0) <= sys_Di(5 downto 0);
when X"37a" => reg62(5 downto 0) <= sys_Di(5 downto 0);
when X"37c" => reg63(5 downto 0) <= sys_Di(5 downto 0);
when X"37e" => reg64(5 downto 0) <= sys_Di(5 downto 0);
when others => null;
end case;
end if;
end if;
end process;
process(reg1)
begin
case reg1 is
when "000000" => cout(0) <= datain(0) ;
when "000001" => cout(0) <= datain(1) ;
when "000010" => cout(0) <= datain(2) ;
when "000011" => cout(0) <= datain(3) ;
when "000100" => cout(0) <= datain(4) ;
when "000101" => cout(0) <= datain(5) ;
when "000110" => cout(0) <= datain(6) ;
when "000111" => cout(0) <= datain(7) ;
when "001000" => cout(0) <= datain(8) ;
when "001001" => cout(0) <= datain(9) ;
when "001010" => cout(0) <= datain(10) ;
when "001011" => cout(0) <= datain(11) ;
when "001100" => cout(0) <= datain(12) ;
when "001101" => cout(0) <= datain(13) ;
when "001110" => cout(0) <= datain(14) ;
when "001111" => cout(0) <= datain(15) ;
when "010000" => cout(0) <= datain(16) ;
when "010001" => cout(0) <= datain(17) ;
when "010010" => cout(0) <= datain(18) ;
when "010011" => cout(0) <= datain(19) ;
when "010100" => cout(0) <= datain(20) ;
when "010101" => cout(0) <= datain(21) ;
when "010110" => cout(0) <= datain(22) ;
when "010111" => cout(0) <= datain(23) ;
when "011000" => cout(0) <= datain(24) ;
when "011001" => cout(0) <= datain(25) ;
when "011010" => cout(0) <= datain(26) ;
when "011011" => cout(0) <= datain(27) ;
when "011100" => cout(0) <= datain(28) ;
when "011101" => cout(0) <= datain(29) ;
when "011110" => cout(0) <= datain(30) ;
when "011111" => cout(0) <= datain(31) ;
when "100000" => cout(0) <= datain(32) ;
when "100001" => cout(0) <= datain(33) ;
when "100010" => cout(0) <= datain(34) ;
when "100011" => cout(0) <= datain(35) ;
when "100100" => cout(0) <= datain(36) ;
when "100101" => cout(0) <= datain(37) ;
when "100110" => cout(0) <= datain(38) ;
when "100111" => cout(0) <= datain(39) ;
when "101000" => cout(0) <= datain(40) ;
when "101001" => cout(0) <= datain(41) ;
when "101010" => cout(0) <= datain(42) ;
when "101011" => cout(0) <= datain(43) ;
when "101100" => cout(0) <= datain(44) ;
when "101101" => cout(0) <= datain(45) ;
when "101110" => cout(0) <= datain(46) ;
when "101111" => cout(0) <= datain(47) ;
when "110000" => cout(0) <= datain(48) ;
when "110001" => cout(0) <= datain(49) ;
when "110010" => cout(0) <= datain(50) ;
when "110011" => cout(0) <= datain(51) ;
when "110100" => cout(0) <= datain(52) ;
when "110101" => cout(0) <= datain(53) ;
when "110110" => cout(0) <= datain(54) ;
when "110111" => cout(0) <= datain(55) ;
when "111000" => cout(0) <= datain(56) ;
when "111001" => cout(0) <= datain(57) ;
when "111010" => cout(0) <= datain(58) ;
when "111011" => cout(0) <= datain(59) ;
when "111100" => cout(0) <= datain(60) ;
when "111101" => cout(0) <= datain(61) ;
when "111110" => cout(0) <= datain(62) ;
when "111111" => cout(0) <= datain(63) ;
when others => cout(0) <= 'Z';
end case;
end process;
process(reg2)
begin
case reg2 is
when "000000" => cout(1) <= datain(0) ;
when "000001" => cout(1) <= datain(1) ;
when "000010" => cout(1) <= datain(2) ;
when "000011" => cout(1) <= datain(3) ;
when "000100" => cout(1) <= datain(4) ;
when "000101" => cout(1) <= datain(5) ;
when "000110" => cout(1) <= datain(6) ;
when "000111" => cout(1) <= datain(7) ;
when "001000" => cout(1) <= datain(8) ;
when "001001" => cout(1) <= datain(9) ;
when "001010" => cout(1) <= datain(10) ;
when "001011" => cout(1) <= datain(11) ;
when "001100" => cout(1) <= datain(12) ;
when "001101" => cout(1) <= datain(13) ;
when "001110" => cout(1) <= datain(14) ;
when "001111" => cout(1) <= datain(15) ;
when "010000" => cout(1) <= datain(16) ;
when "010001" => cout(1) <= datain(17) ;
when "010010" => cout(1) <= datain(18) ;
when "010011" => cout(1) <= datain(19) ;
when "010100" => cout(1) <= datain(20) ;
when "010101" => cout(1) <= datain(21) ;
when "010110" => cout(1) <= datain(22) ;
when "010111" => cout(1) <= datain(23) ;
when "011000" => cout(1) <= datain(24) ;
when "011001" => cout(1) <= datain(25) ;
when "011010" => cout(1) <= datain(26) ;
when "011011" => cout(1) <= datain(27) ;
when "011100" => cout(1) <= datain(28) ;
when "011101" => cout(1) <= datain(29) ;
when "011110" => cout(1) <= datain(30) ;
when "011111" => cout(1) <= datain(31) ;
when "100000" => cout(1) <= datain(32) ;
when "100001" => cout(1) <= datain(33) ;
when "100010" => cout(1) <= datain(34) ;
when "100011" => cout(1) <= datain(35) ;
when "100100" => cout(1) <= datain(36) ;
when "100101" => cout(1) <= datain(37) ;
when "100110" => cout(1) <= datain(38) ;
when "100111" => cout(1) <= datain(39) ;
when "101000" => cout(1) <= datain(40) ;
when "101001" => cout(1) <= datain(41) ;
when "101010" => cout(1) <= datain(42) ;
when "101011" => cout(1) <= datain(43) ;
when "101100" => cout(1) <= datain(44) ;
when "101101" => cout(1) <= datain(45) ;
when "101110" => cout(1) <= datain(46) ;
when "101111" => cout(1) <= datain(47) ;
when "110000" => cout(1) <= datain(48) ;
when "110001" => cout(1) <= datain(49) ;
when "110010" => cout(1) <= datain(50) ;
when "110011" => cout(1) <= datain(51) ;
when "110100" => cout(1) <= datain(52) ;
when "110101" => cout(1) <= datain(53) ;
when "110110" => cout(1) <= datain(54) ;
when "110111" => cout(1) <= datain(55) ;
when "111000" => cout(1) <= datain(56) ;
when "111001" => cout(1) <= datain(57) ;
when "111010" => cout(1) <= datain(58) ;
when "111011" => cout(1) <= datain(59) ;
when "111100" => cout(1) <= datain(60) ;
when "111101" => cout(1) <= datain(61) ;
when "111110" => cout(1) <= datain(62) ;
when "111111" => cout(1) <= datain(63) ;
when others => cout(1) <= 'Z';
end case;
end process;
process(reg3)
begin
case reg3 is
when "000000" => cout(2) <= datain(0) ;
when "000001" => cout(2) <= datain(1) ;
when "000010" => cout(2) <= datain(2) ;
when "000011" => cout(2) <= datain(3) ;
when "000100" => cout(2) <= datain(4) ;
when "000101" => cout(2) <= datain(5) ;
when "000110" => cout(2) <= datain(6) ;
when "000111" => cout(2) <= datain(7) ;
when "001000" => cout(2) <= datain(8) ;
when "001001" => cout(2) <= datain(9) ;
when "001010" => cout(2) <= datain(10) ;
when "001011" => cout(2) <= datain(11) ;
when "001100" => cout(2) <= datain(12) ;
when "001101" => cout(2) <= datain(13) ;
when "001110" => cout(2) <= datain(14) ;
when "001111" => cout(2) <= datain(15) ;
when "010000" => cout(2) <= datain(16) ;
when "010001" => cout(2) <= datain(17) ;
when "010010" => cout(2) <= datain(18) ;
when "010011" => cout(2) <= datain(19) ;
when "010100" => cout(2) <= datain(20) ;
when "010101" => cout(2) <= datain(21) ;
when "010110" => cout(2) <= datain(22) ;
when "010111" => cout(2) <= datain(23) ;
when "011000" => cout(2) <= datain(24) ;
when "011001" => cout(2) <= datain(25) ;
when "011010" => cout(2) <= datain(26) ;
when "011011" => cout(2) <= datain(27) ;
when "011100" => cout(2) <= datain(28) ;
when "011101" => cout(2) <= datain(29) ;
when "011110" => cout(2) <= datain(30) ;
when "011111" => cout(2) <= datain(31) ;
when "100000" => cout(2) <= datain(32) ;
when "100001" => cout(2) <= datain(33) ;
when "100010" => cout(2) <= datain(34) ;
when "100011" => cout(2) <= datain(35) ;
when "100100" => cout(2) <= datain(36) ;
when "100101" => cout(2) <= datain(37) ;
when "100110" => cout(2) <= datain(38) ;
when "100111" => cout(2) <= datain(39) ;
when "101000" => cout(2) <= datain(40) ;
when "101001" => cout(2) <= datain(41) ;
when "101010" => cout(2) <= datain(42) ;
when "101011" => cout(2) <= datain(43) ;
when "101100" => cout(2) <= datain(44) ;
when "101101" => cout(2) <= datain(45) ;
when "101110" => cout(2) <= datain(46) ;
when "101111" => cout(2) <= datain(47) ;
when "110000" => cout(2) <= datain(48) ;
when "110001" => cout(2) <= datain(49) ;
when "110010" => cout(2) <= datain(50) ;
when "110011" => cout(2) <= datain(51) ;
when "110100" => cout(2) <= datain(52) ;
when "110101" => cout(2) <= datain(53) ;
when "110110" => cout(2) <= datain(54) ;
when "110111" => cout(2) <= datain(55) ;
when "111000" => cout(2) <= datain(56) ;
when "111001" => cout(2) <= datain(57) ;
when "111010" => cout(2) <= datain(58) ;
when "111011" => cout(2) <= datain(59) ;
when "111100" => cout(2) <= datain(60) ;
when "111101" => cout(2) <= datain(61) ;
when "111110" => cout(2) <= datain(62) ;
when "111111" => cout(2) <= datain(63) ;
when others => cout(2) <= 'Z';
end case;
end process;
process(reg4)
begin
case reg4 is
when "000000" => cout(3) <= datain(0) ;
when "000001" => cout(3) <= datain(1) ;
when "000010" => cout(3) <= datain(2) ;
when "000011" => cout(3) <= datain(3) ;
when "000100" => cout(3) <= datain(4) ;
when "000101" => cout(3) <= datain(5) ;
when "000110" => cout(3) <= datain(6) ;
when "000111" => cout(3) <= datain(7) ;
when "001000" => cout(3) <= datain(8) ;
when "001001" => cout(3) <= datain(9) ;
when "001010" => cout(3) <= datain(10) ;
when "001011" => cout(3) <= datain(11) ;
when "001100" => cout(3) <= datain(12) ;
when "001101" => cout(3) <= datain(13) ;
when "001110" => cout(3) <= datain(14) ;
when "001111" => cout(3) <= datain(15) ;
when "010000" => cout(3) <= datain(16) ;
when "010001" => cout(3) <= datain(17) ;
when "010010" => cout(3) <= datain(18) ;
when "010011" => cout(3) <= datain(19) ;
when "010100" => cout(3) <= datain(20) ;
when "010101" => cout(3) <= datain(21) ;
when "010110" => cout(3) <= datain(22) ;
when "010111" => cout(3) <= datain(23) ;
when "011000" => cout(3) <= datain(24) ;
when "011001" => cout(3) <= datain(25) ;
when "011010" => cout(3) <= datain(26) ;
when "011011" => cout(3) <= datain(27) ;
when "011100" => cout(3) <= datain(28) ;
when "011101" => cout(3) <= datain(29) ;
when "011110" => cout(3) <= datain(30) ;
when "011111" => cout(3) <= datain(31) ;
when "100000" => cout(3) <= datain(32) ;
when "100001" => cout(3) <= datain(33) ;
when "100010" => cout(3) <= datain(34) ;
when "100011" => cout(3) <= datain(35) ;
when "100100" => cout(3) <= datain(36) ;
when "100101" => cout(3) <= datain(37) ;
when "100110" => cout(3) <= datain(38) ;
when "100111" => cout(3) <= datain(39) ;
when "101000" => cout(3) <= datain(40) ;
when "101001" => cout(3) <= datain(41) ;
when "101010" => cout(3) <= datain(42) ;
when "101011" => cout(3) <= datain(43) ;
when "101100" => cout(3) <= datain(44) ;
when "101101" => cout(3) <= datain(45) ;
when "101110" => cout(3) <= datain(46) ;
when "101111" => cout(3) <= datain(47) ;
when "110000" => cout(3) <= datain(48) ;
when "110001" => cout(3) <= datain(49) ;
when "110010" => cout(3) <= datain(50) ;
when "110011" => cout(3) <= datain(51) ;
when "110100" => cout(3) <= datain(52) ;
when "110101" => cout(3) <= datain(53) ;
when "110110" => cout(3) <= datain(54) ;
when "110111" => cout(3) <= datain(55) ;
when "111000" => cout(3) <= datain(56) ;
when "111001" => cout(3) <= datain(57) ;
when "111010" => cout(3) <= datain(58) ;
when "111011" => cout(3) <= datain(59) ;
when "111100" => cout(3) <= datain(60) ;
when "111101" => cout(3) <= datain(61) ;
when "111110" => cout(3) <= datain(62) ;
when "111111" => cout(3) <= datain(63) ;
when others => cout(3) <= 'Z';
end case;
end process;
process(reg5)
begin
case reg5 is
when "000000" => cout(4) <= datain(0) ;
when "000001" => cout(4) <= datain(1) ;
when "000010" => cout(4) <= datain(2) ;
when "000011" => cout(4) <= datain(3) ;
when "000100" => cout(4) <= datain(4) ;
when "000101" => cout(4) <= datain(5) ;
when "000110" => cout(4) <= datain(6) ;
when "000111" => cout(4) <= datain(7) ;
when "001000" => cout(4) <= datain(8) ;
when "001001" => cout(4) <= datain(9) ;
when "001010" => cout(4) <= datain(10) ;
when "001011" => cout(4) <= datain(11) ;
when "001100" => cout(4) <= datain(12) ;
when "001101" => cout(4) <= datain(13) ;
when "001110" => cout(4) <= datain(14) ;
when "001111" => cout(4) <= datain(15) ;
when "010000" => cout(4) <= datain(16) ;
when "010001" => cout(4) <= datain(17) ;
when "010010" => cout(4) <= datain(18) ;
when "010011" => cout(4) <= datain(19) ;
when "010100" => cout(4) <= datain(20) ;
when "010101" => cout(4) <= datain(21) ;
when "010110" => cout(4) <= datain(22) ;
when "010111" => cout(4) <= datain(23) ;
when "011000" => cout(4) <= datain(24) ;
when "011001" => cout(4) <= datain(25) ;
when "011010" => cout(4) <= datain(26) ;
when "011011" => cout(4) <= datain(27) ;
when "011100" => cout(4) <= datain(28) ;
when "011101" => cout(4) <= datain(29) ;
when "011110" => cout(4) <= datain(30) ;
when "011111" => cout(4) <= datain(31) ;
when "100000" => cout(4) <= datain(32) ;
when "100001" => cout(4) <= datain(33) ;
when "100010" => cout(4) <= datain(34) ;
when "100011" => cout(4) <= datain(35) ;
when "100100" => cout(4) <= datain(36) ;
when "100101" => cout(4) <= datain(37) ;
when "100110" => cout(4) <= datain(38) ;
when "100111" => cout(4) <= datain(39) ;
when "101000" => cout(4) <= datain(40) ;
when "101001" => cout(4) <= datain(41) ;
when "101010" => cout(4) <= datain(42) ;
when "101011" => cout(4) <= datain(43) ;
when "101100" => cout(4) <= datain(44) ;
when "101101" => cout(4) <= datain(45) ;
when "101110" => cout(4) <= datain(46) ;
when "101111" => cout(4) <= datain(47) ;
when "110000" => cout(4) <= datain(48) ;
when "110001" => cout(4) <= datain(49) ;
when "110010" => cout(4) <= datain(50) ;
when "110011" => cout(4) <= datain(51) ;
when "110100" => cout(4) <= datain(52) ;
when "110101" => cout(4) <= datain(53) ;
when "110110" => cout(4) <= datain(54) ;
when "110111" => cout(4) <= datain(55) ;
when "111000" => cout(4) <= datain(56) ;
when "111001" => cout(4) <= datain(57) ;
when "111010" => cout(4) <= datain(58) ;
when "111011" => cout(4) <= datain(59) ;
when "111100" => cout(4) <= datain(60) ;
when "111101" => cout(4) <= datain(61) ;
when "111110" => cout(4) <= datain(62) ;
when "111111" => cout(4) <= datain(63) ;
when others => cout(4) <= 'Z';
end case;
end process;
process(reg6)
begin
case reg6 is
when "000000" => cout(5) <= datain(0) ;
when "000001" => cout(5) <= datain(1) ;
when "000010" => cout(5) <= datain(2) ;
when "000011" => cout(5) <= datain(3) ;
when "000100" => cout(5) <= datain(4) ;
when "000101" => cout(5) <= datain(5) ;
when "000110" => cout(5) <= datain(6) ;
when "000111" => cout(5) <= datain(7) ;
when "001000" => cout(5) <= datain(8) ;
when "001001" => cout(5) <= datain(9) ;
when "001010" => cout(5) <= datain(10) ;
when "001011" => cout(5) <= datain(11) ;
when "001100" => cout(5) <= datain(12) ;
when "001101" => cout(5) <= datain(13) ;
when "001110" => cout(5) <= datain(14) ;
when "001111" => cout(5) <= datain(15) ;
when "010000" => cout(5) <= datain(16) ;
when "010001" => cout(5) <= datain(17) ;
when "010010" => cout(5) <= datain(18) ;
when "010011" => cout(5) <= datain(19) ;
when "010100" => cout(5) <= datain(20) ;
when "010101" => cout(5) <= datain(21) ;
when "010110" => cout(5) <= datain(22) ;
when "010111" => cout(5) <= datain(23) ;
when "011000" => cout(5) <= datain(24) ;
when "011001" => cout(5) <= datain(25) ;
when "011010" => cout(5) <= datain(26) ;
when "011011" => cout(5) <= datain(27) ;
when "011100" => cout(5) <= datain(28) ;
when "011101" => cout(5) <= datain(29) ;
when "011110" => cout(5) <= datain(30) ;
when "011111" => cout(5) <= datain(31) ;
when "100000" => cout(5) <= datain(32) ;
when "100001" => cout(5) <= datain(33) ;
when "100010" => cout(5) <= datain(34) ;
when "100011" => cout(5) <= datain(35) ;
when "100100" => cout(5) <= datain(36) ;
when "100101" => cout(5) <= datain(37) ;
when "100110" => cout(5) <= datain(38) ;
when "100111" => cout(5) <= datain(39) ;
when "101000" => cout(5) <= datain(40) ;
when "101001" => cout(5) <= datain(41) ;
when "101010" => cout(5) <= datain(42) ;
when "101011" => cout(5) <= datain(43) ;
when "101100" => cout(5) <= datain(44) ;
when "101101" => cout(5) <= datain(45) ;
when "101110" => cout(5) <= datain(46) ;
when "101111" => cout(5) <= datain(47) ;
when "110000" => cout(5) <= datain(48) ;
when "110001" => cout(5) <= datain(49) ;
when "110010" => cout(5) <= datain(50) ;
when "110011" => cout(5) <= datain(51) ;
when "110100" => cout(5) <= datain(52) ;
when "110101" => cout(5) <= datain(53) ;
when "110110" => cout(5) <= datain(54) ;
when "110111" => cout(5) <= datain(55) ;
when "111000" => cout(5) <= datain(56) ;
when "111001" => cout(5) <= datain(57) ;
when "111010" => cout(5) <= datain(58) ;
when "111011" => cout(5) <= datain(59) ;
when "111100" => cout(5) <= datain(60) ;
when "111101" => cout(5) <= datain(61) ;
when "111110" => cout(5) <= datain(62) ;
when "111111" => cout(5) <= datain(63) ;
when others => cout(5) <= 'Z';
end case;
end process;
process(reg7)
begin
case reg7 is
when "000000" => cout(6) <= datain(0) ;
when "000001" => cout(6) <= datain(1) ;
when "000010" => cout(6) <= datain(2) ;
when "000011" => cout(6) <= datain(3) ;
when "000100" => cout(6) <= datain(4) ;
when "000101" => cout(6) <= datain(5) ;
when "000110" => cout(6) <= datain(6) ;
when "000111" => cout(6) <= datain(7) ;
when "001000" => cout(6) <= datain(8) ;
when "001001" => cout(6) <= datain(9) ;
when "001010" => cout(6) <= datain(10) ;
when "001011" => cout(6) <= datain(11) ;
when "001100" => cout(6) <= datain(12) ;
when "001101" => cout(6) <= datain(13) ;
when "001110" => cout(6) <= datain(14) ;
when "001111" => cout(6) <= datain(15) ;
when "010000" => cout(6) <= datain(16) ;
when "010001" => cout(6) <= datain(17) ;
when "010010" => cout(6) <= datain(18) ;
when "010011" => cout(6) <= datain(19) ;
when "010100" => cout(6) <= datain(20) ;
when "010101" => cout(6) <= datain(21) ;
when "010110" => cout(6) <= datain(22) ;
when "010111" => cout(6) <= datain(23) ;
when "011000" => cout(6) <= datain(24) ;
when "011001" => cout(6) <= datain(25) ;
when "011010" => cout(6) <= datain(26) ;
when "011011" => cout(6) <= datain(27) ;
when "011100" => cout(6) <= datain(28) ;
when "011101" => cout(6) <= datain(29) ;
when "011110" => cout(6) <= datain(30) ;
when "011111" => cout(6) <= datain(31) ;
when "100000" => cout(6) <= datain(32) ;
when "100001" => cout(6) <= datain(33) ;
when "100010" => cout(6) <= datain(34) ;
when "100011" => cout(6) <= datain(35) ;
when "100100" => cout(6) <= datain(36) ;
when "100101" => cout(6) <= datain(37) ;
when "100110" => cout(6) <= datain(38) ;
when "100111" => cout(6) <= datain(39) ;
when "101000" => cout(6) <= datain(40) ;
when "101001" => cout(6) <= datain(41) ;
when "101010" => cout(6) <= datain(42) ;
when "101011" => cout(6) <= datain(43) ;
when "101100" => cout(6) <= datain(44) ;
when "101101" => cout(6) <= datain(45) ;
when "101110" => cout(6) <= datain(46) ;
when "101111" => cout(6) <= datain(47) ;
when "110000" => cout(6) <= datain(48) ;
when "110001" => cout(6) <= datain(49) ;
when "110010" => cout(6) <= datain(50) ;
when "110011" => cout(6) <= datain(51) ;
when "110100" => cout(6) <= datain(52) ;
when "110101" => cout(6) <= datain(53) ;
when "110110" => cout(6) <= datain(54) ;
when "110111" => cout(6) <= datain(55) ;
when "111000" => cout(6) <= datain(56) ;
when "111001" => cout(6) <= datain(57) ;
when "111010" => cout(6) <= datain(58) ;
when "111011" => cout(6) <= datain(59) ;
when "111100" => cout(6) <= datain(60) ;
when "111101" => cout(6) <= datain(61) ;
when "111110" => cout(6) <= datain(62) ;
when "111111" => cout(6) <= datain(63) ;
when others => cout(6) <= 'Z';
end case;
end process;
process(reg8)
begin
case reg8 is
when "000000" => cout(7) <= datain(0) ;
when "000001" => cout(7) <= datain(1) ;
when "000010" => cout(7) <= datain(2) ;
when "000011" => cout(7) <= datain(3) ;
when "000100" => cout(7) <= datain(4) ;
when "000101" => cout(7) <= datain(5) ;
when "000110" => cout(7) <= datain(6) ;
when "000111" => cout(7) <= datain(7) ;
when "001000" => cout(7) <= datain(8) ;
when "001001" => cout(7) <= datain(9) ;
when "001010" => cout(7) <= datain(10) ;
when "001011" => cout(7) <= datain(11) ;
when "001100" => cout(7) <= datain(12) ;
when "001101" => cout(7) <= datain(13) ;
when "001110" => cout(7) <= datain(14) ;
when "001111" => cout(7) <= datain(15) ;
when "010000" => cout(7) <= datain(16) ;
when "010001" => cout(7) <= datain(17) ;
when "010010" => cout(7) <= datain(18) ;
when "010011" => cout(7) <= datain(19) ;
when "010100" => cout(7) <= datain(20) ;
when "010101" => cout(7) <= datain(21) ;
when "010110" => cout(7) <= datain(22) ;
when "010111" => cout(7) <= datain(23) ;
when "011000" => cout(7) <= datain(24) ;
when "011001" => cout(7) <= datain(25) ;
when "011010" => cout(7) <= datain(26) ;
when "011011" => cout(7) <= datain(27) ;
when "011100" => cout(7) <= datain(28) ;
when "011101" => cout(7) <= datain(29) ;
when "011110" => cout(7) <= datain(30) ;
when "011111" => cout(7) <= datain(31) ;
when "100000" => cout(7) <= datain(32) ;
when "100001" => cout(7) <= datain(33) ;
when "100010" => cout(7) <= datain(34) ;
when "100011" => cout(7) <= datain(35) ;
when "100100" => cout(7) <= datain(36) ;
when "100101" => cout(7) <= datain(37) ;
when "100110" => cout(7) <= datain(38) ;
when "100111" => cout(7) <= datain(39) ;
when "101000" => cout(7) <= datain(40) ;
when "101001" => cout(7) <= datain(41) ;
when "101010" => cout(7) <= datain(42) ;
when "101011" => cout(7) <= datain(43) ;
when "101100" => cout(7) <= datain(44) ;
when "101101" => cout(7) <= datain(45) ;
when "101110" => cout(7) <= datain(46) ;
when "101111" => cout(7) <= datain(47) ;
when "110000" => cout(7) <= datain(48) ;
when "110001" => cout(7) <= datain(49) ;
when "110010" => cout(7) <= datain(50) ;
when "110011" => cout(7) <= datain(51) ;
when "110100" => cout(7) <= datain(52) ;
when "110101" => cout(7) <= datain(53) ;
when "110110" => cout(7) <= datain(54) ;
when "110111" => cout(7) <= datain(55) ;
when "111000" => cout(7) <= datain(56) ;
when "111001" => cout(7) <= datain(57) ;
when "111010" => cout(7) <= datain(58) ;
when "111011" => cout(7) <= datain(59) ;
when "111100" => cout(7) <= datain(60) ;
when "111101" => cout(7) <= datain(61) ;
when "111110" => cout(7) <= datain(62) ;
when "111111" => cout(7) <= datain(63) ;
when others => cout(7) <= 'Z';
end case;
end process;
