📄 scinode2.vhd
字号:
res_rec_q_first <= 0;
else
res_rec_q_first <= res_rec_q_first + 1;
end if;
end if;
res_rec_q_full <= '0';
process_priority <= 1;
elsif( req_rec_q_first /= req_rec_q_last ) then
if( req_rec_q( req_rec_q_first )(1)(8) = '0' ) then --request packet and store data;
case req_rec_q( req_rec_q_first )(1)(3 downto 0) is
when "0000" =>
a_tmp(0) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(0) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0001" =>
a_tmp(1) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(1) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0010" =>
a_tmp(2) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(2) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0011" =>
a_tmp(3) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(3) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0100" =>
a_tmp(4) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(4) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0101" =>
a_tmp(5) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(5) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0110" =>
a_tmp(6) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(6) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "0111" =>
a_tmp(7) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(7) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when "1000" =>
a_tmp(8) <= req_rec_q( req_rec_q_first )(2)(15 downto 8);
b_tmp(8) <= req_rec_q( req_rec_q_first )(2)(7 downto 0);
when others =>
end case;
stripper_q( stripper_q_last )(0) <= req_rec_q( req_rec_q_first )(0); --insert request echo
stripper_q( stripper_q_last )(1) <= "0000000000000001";
stripper_q( stripper_q_last )(2) <= "00000000" & AddressId;
stripper_q( stripper_q_last )(3) <= "0000000000000000";
if( stripper_q_last = 3 ) then --update the stripper_q_last
stripper_q_last <= 0;
else
stripper_q_last <= stripper_q_last + 1;
end if;
if( req_rec_q_first = 3 ) then
req_rec_q_first <= 0;
else
req_rec_q_first <= req_rec_q_first + 1;
end if;
req_rec_q_full <= '0'; --deassert the req_rec_q_full signal
end if; --request packet and load data; NOT IMPLEMENT!!!!
process_priority <= 2;
else
if( process_priority = 2 ) then
process_priority <= 1;
else
process_priority <= process_priority + 1;
end if;
end if;
elsif( counter = 4 ) then
case global_cnt is
when 1 =>
a_tmp(3) <= a(3); b_tmp(3) <= b(3);
a_tmp(4) <= a(4); b_tmp(4) <= b(4);
a_tmp(5) <= a(5); b_tmp(5) <= b(5);
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(3) <= a(0) & b(0);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 2 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000100";
req_xmit_q( req_xmit_q_last )(3) <= a(1) & b(1);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 3 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(3) <= a(2) & b(2);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 5 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(3) <= a(6) & b(6);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 8 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000100";
req_xmit_q( req_xmit_q_last )(3) <= a(7) & b(7);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 11 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(3) <= a(8) & b(8);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 24 => --finish row lookstep
-- a(0) <= a_tmp(0); a(1) <= a_tmp(1); a(2) <= a_tmp(2);
-- a(6) <= a_tmp(6); a(7) <= a_tmp(7); a(8) <= a_tmp(8);
-- b(0) <= a_tmp(0); b(1) <= b_tmp(1); b(2) <= b_tmp(2);
-- b(6) <= a_tmp(6); b(7) <= b_tmp(7); b(8) <= b_tmp(8);
-- when 25 => --start row DFT
a_tmp1(0) <= (a_tmp(0)(7) & a_tmp(0)(7) & a_tmp(0)(7) & a_tmp(0)(7) & a_tmp(0)(7) & a_tmp(0)) + (a_tmp(1)(7) & a_tmp(1)(7) & a_tmp(1)(7) &a_tmp(1)(7) &a_tmp(1)(7) & a_tmp(1))
+ (a_tmp(2)(7) & a_tmp(2)(7) & a_tmp(2)(7) & a_tmp(2)(7) & a_tmp(2)(7) & a_tmp(2)) + (a_tmp(3)(7) & a_tmp(3)(7) & a_tmp(3)(7) & a_tmp(3)(7) & a_tmp(3)(7) & a_tmp(3))
+ (a_tmp(4)(7) & a_tmp(4)(7) & a_tmp(4)(7) & a_tmp(4)(7) & a_tmp(4)(7) & a_tmp(4)) + (a_tmp(5)(7) & a_tmp(5)(7) & a_tmp(5)(7) & a_tmp(5)(7) & a_tmp(5)(7) & a_tmp(5))
+ (a_tmp(6)(7) & a_tmp(6)(7) & a_tmp(6)(7) & a_tmp(6)(7) & a_tmp(6)(7) & a_tmp(6)) + (a_tmp(7)(7) & a_tmp(7)(7) & a_tmp(7)(7) & a_tmp(7)(7) & a_tmp(7)(7) & a_tmp(7))
+ (a_tmp(8)(7) & a_tmp(8)(7) & a_tmp(8)(7) & a_tmp(8)(7) & a_tmp(8));
b_tmp1(0) <= (b_tmp(0)(7) & b_tmp(0)(7) & b_tmp(0)(7) & b_tmp(0)(7) & b_tmp(0)(7) & b_tmp(0)) + (b_tmp(1)(7) & b_tmp(1)(7) & b_tmp(1)(7) & b_tmp(1)(7) & b_tmp(1)(7) & b_tmp(1))
+ (b_tmp(2)(7) & b_tmp(2)(7) & b_tmp(2)(7) & b_tmp(2)(7) & b_tmp(2)(7) & b_tmp(2)) + (b_tmp(3)(7) & b_tmp(3)(7) & b_tmp(3)(7) & b_tmp(3)(7) & b_tmp(3)(7) & b_tmp(3))
+ (b_tmp(4)(7) & b_tmp(4)(7) & b_tmp(4)(7) & b_tmp(4)(7) & b_tmp(4)(7) & b_tmp(4)) + (b_tmp(5)(7) & b_tmp(5)(7) & b_tmp(5)(7) & b_tmp(5)(7) & b_tmp(5)(7) & b_tmp(5))
+ (b_tmp(6)(7) & b_tmp(6)(7) & b_tmp(6)(7) & b_tmp(6)(7) & b_tmp(6)(7) & b_tmp(6)) + (b_tmp(7)(7) & b_tmp(7)(7) & b_tmp(7)(7) & b_tmp(7)(7) & b_tmp(7)(7) & b_tmp(7))
+ (b_tmp(8)(7) & b_tmp(8)(7) & b_tmp(8)(7) & b_tmp(8)(7) & b_tmp(8)(7) & b_tmp(8));
a_tmp1(1) <= (a_tmp(0)(7) & a_tmp(0) & "0000")
+ ( a_tmp(1)*w1_r) - ( b_tmp(1)*w1_c) + ( a_tmp(2)*w2_r) - ( b_tmp(2)*w2_c)
+ ( a_tmp(3)*w3_r) - ( b_tmp(3)*w3_c) + ( a_tmp(4)*w4_r) - (b_tmp(4)*w4_c) + (a_tmp(5)*w5_r)
- (b_tmp(5)*w5_c) + (a_tmp(6)*w6_r) - (b_tmp(6)*w6_c) + (a_tmp(7)*w7_r )- (b_tmp(7)*w7_c)
+ (a_tmp(8)*w8_r) - (b_tmp(8)*w8_c);
b_tmp1(1) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(1)*w1_r + a_tmp(1)*w1_c + b_tmp(2)*w2_r + a_tmp(2)*w2_c
+ b_tmp(3)*w3_r + a_tmp(3)*w3_c + b_tmp(4)*w4_r + a_tmp(4)*w4_c + b_tmp(5)*w5_r
+ a_tmp(5)*w5_c + b_tmp(6)*w6_r + a_tmp(6)*w6_c + b_tmp(7)*w7_r + a_tmp(7)*w7_c
+ b_tmp(8)*w8_r + a_tmp(8)*w8_c;
a_tmp1(2) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(1)*w2_r - b_tmp(1)*w2_c + a_tmp(2)*w4_r - b_tmp(2)*w4_c
+ a_tmp(3)*w6_r - b_tmp(3)*w6_c + a_tmp(4)*w8_r - b_tmp(4)*w8_c + a_tmp(5)*w1_r
- b_tmp(5)*w1_c + a_tmp(6)*w3_r - b_tmp(6)*w3_c + a_tmp(7)*w5_r - b_tmp(7)*w5_c
+ a_tmp(8)*w7_r - b_tmp(8)*w7_c;
b_tmp1(2) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(1)*w2_r + a_tmp(1)*w2_c + b_tmp(2)*w4_r + a_tmp(2)*w4_c
+ b_tmp(3)*w6_r + a_tmp(3)*w6_c + b_tmp(4)*w8_r + a_tmp(4)*w8_c + b_tmp(5)*w1_r
+ a_tmp(5)*w1_c + b_tmp(6)*w3_r + a_tmp(6)*w3_c + b_tmp(7)*w5_r + a_tmp(7)*w5_c
+ b_tmp(8)*w7_r + a_tmp(8)*w7_c;
a_tmp1(3) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(1)*w3_r - b_tmp(1)*w3_c + a_tmp(2)*w6_r - b_tmp(2)*w6_c
+ (a_tmp(3)(7) & a_tmp(3) & "0000" ) + a_tmp(4)*w3_r - b_tmp(4)*w3_c + a_tmp(5)*w6_r - b_tmp(5)*w6_c
+ (a_tmp(6)(7) & a_tmp(6) & "0000" ) + a_tmp(7)*w3_r - b_tmp(7)*w3_c + a_tmp(8)*w6_r - b_tmp(8)*w6_c;
b_tmp1(3) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(1)*w3_r + a_tmp(1)*w3_c + b_tmp(2)*w6_r + a_tmp(2)*w6_c
+ (b_tmp(3)(7) & b_tmp(3) & "0000") + b_tmp(4)*w3_r + a_tmp(4)*w3_c + b_tmp(5)*w6_r + a_tmp(5)*w6_c
+ (b_tmp(6)(7) & b_tmp(6) & "0000") + b_tmp(7)*w3_r + a_tmp(7)*w3_c + b_tmp(8)*w6_r + a_tmp(8)*w6_c;
a_tmp1(4) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(1)*w4_r - b_tmp(1)*w4_c + a_tmp(2)*w8_r - b_tmp(2)*w8_c
+ a_tmp(3)*w3_r - b_tmp(3)*w3_c + a_tmp(4)*w7_r - b_tmp(4)*w7_c + a_tmp(5)*w2_r
- b_tmp(5)*w2_c + a_tmp(6)*w6_r - b_tmp(6)*w6_c + a_tmp(7)*w1_r - b_tmp(7)*w1_c
+ a_tmp(8)*w5_r - b_tmp(8)*w5_c;
b_tmp1(4) <= (b_tmp(0)(7)& b_tmp(0) & "0000" )
+ b_tmp(1)*w4_r + a_tmp(1)*w4_c + b_tmp(2)*w8_r + a_tmp(2)*w8_c
+ b_tmp(3)*w3_r + a_tmp(3)*w3_c + b_tmp(4)*w7_r + a_tmp(4)*w7_c + b_tmp(5)*w2_r
+ a_tmp(5)*w2_c + b_tmp(6)*w6_r + a_tmp(6)*w6_c + b_tmp(7)*w1_r + a_tmp(7)*w1_c
+ b_tmp(8)*w5_r + a_tmp(8)*w5_c;
a_tmp1(5) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(1)*w5_r - b_tmp(1)*w5_c + a_tmp(2)*w1_r - b_tmp(2)*w1_c
+ a_tmp(3)*w6_r - b_tmp(3)*w6_c + a_tmp(4)*w2_r - b_tmp(4)*w2_c + a_tmp(5)*w7_r
- b_tmp(5)*w7_c + a_tmp(6)*w3_r - b_tmp(6)*w3_c + a_tmp(7)*w8_r - b_tmp(7)*w8_c
+ a_tmp(8)*w4_r - b_tmp(8)*w4_c;
b_tmp1(5) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(1)*w5_r + a_tmp(1)*w5_c + b_tmp(2)*w1_r + a_tmp(2)*w1_c
+ b_tmp(3)*w6_r + a_tmp(3)*w6_c + b_tmp(4)*w2_r + a_tmp(4)*w2_c + b_tmp(5)*w7_r
+ a_tmp(5)*w7_c + b_tmp(6)*w3_r + a_tmp(6)*w3_c + b_tmp(7)*w8_r + a_tmp(7)*w8_c
+ b_tmp(8)*w4_r + a_tmp(8)*w4_c;
a_tmp1(6) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(1)*w6_r - b_tmp(1)*w6_c + a_tmp(2)*w3_r - b_tmp(2)*w3_c
+ (a_tmp(3)(7) & a_tmp(3) & "0000") + a_tmp(4)*w6_r - b_tmp(4)*w6_c + a_tmp(5)*w3_r - b_tmp(5)*w3_c
+ (a_tmp(6)(7) & a_tmp(6) & "0000") + a_tmp(7)*w6_r - b_tmp(7)*w6_c + a_tmp(8)*w3_r - b_tmp(8)*w3_c;
b_tmp1(6) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(1)*w6_r + a_tmp(1)*w6_c + b_tmp(2)*w3_r + a_tmp(2)*w3_c
+ (b_tmp(3)(7) & b_tmp(3) & "0000") + b_tmp(4)*w6_r + a_tmp(4)*w6_c + b_tmp(5)*w3_r + a_tmp(5)*w3_c
+ (b_tmp(6)(7) & b_tmp(6) & "0000") + b_tmp(7)*w6_r + a_tmp(7)*w6_c + b_tmp(8)*w3_r + a_tmp(8)*w3_c;
a_tmp1(7) <= (a_tmp(0)(7) & a_tmp(0) & "0000")
+ a_tmp(1)*w7_r - b_tmp(1)*w7_c + a_tmp(2)*w5_r - b_tmp(2)*w5_c
+ a_tmp(3)*w3_r - b_tmp(3)*w3_c + a_tmp(4)*w1_r - b_tmp(4)*w1_c + a_tmp(5)*w8_r
- b_tmp(5)*w8_c + a_tmp(6)*w6_r - b_tmp(6)*w6_c + a_tmp(7)*w4_r - b_tmp(7)*w4_c
+ a_tmp(8)*w2_r - b_tmp(8)*w2_c;
b_tmp1(7) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(1)*w7_r + a_tmp(1)*w7_c + b_tmp(2)*w5_r + a_tmp(2)*w5_c
+ b_tmp(3)*w3_r + a_tmp(3)*w3_c + b_tmp(4)*w1_r + a_tmp(4)*w1_c + b_tmp(5)*w8_r
+ a_tmp(5)*w8_c + b_tmp(6)*w6_r + a_tmp(6)*w6_c + b_tmp(7)*w4_r + a_tmp(7)*w4_c
+ b_tmp(8)*w2_r + a_tmp(8)*w2_c;
a_tmp1(8) <= (a_tmp(0)(7) & a_tmp(0) & "0000")
+ a_tmp(1)*w8_r - b_tmp(1)*w8_c + a_tmp(2)*w7_r - b_tmp(2)*w7_c
+ a_tmp(3)*w6_r - b_tmp(3)*w6_c + a_tmp(4)*w5_r - b_tmp(4)*w5_c + a_tmp(5)*w4_r
- b_tmp(5)*w4_c + a_tmp(6)*w3_r - b_tmp(6)*w3_c + a_tmp(7)*w2_r - b_tmp(7)*w2_c
+ a_tmp(8)*w1_r - b_tmp(8)*w1_c;
b_tmp1(8) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(1)*w8_r + a_tmp(1)*w8_c + b_tmp(2)*w7_r + a_tmp(2)*w7_c
+ b_tmp(3)*w6_r + a_tmp(3)*w6_c + b_tmp(4)*w5_r + a_tmp(4)*w5_c + b_tmp(5)*w4_r
+ a_tmp(5)*w4_c + b_tmp(6)*w3_r + a_tmp(6)*w3_c + b_tmp(7)*w2_r + a_tmp(7)*w2_c
+ b_tmp(8)*w1_r + a_tmp(8)*w1_c;
when 26 =>
a(0) <= a_tmp1(0)(7 downto 0); a(1) <= a_tmp1(1)(11 downto 4);
a(2) <= a_tmp1(2)(11 downto 4); a(3) <= a_tmp1(3)(11 downto 4);
a(4) <= a_tmp1(4)(11 downto 4); a(5) <= a_tmp1(5)(11 downto 4);
a(6) <= a_tmp1(6)(11 downto 4); a(7) <= a_tmp1(7)(11 downto 4);
a(8) <= a_tmp1(8)(11 downto 4);
b(0) <= b_tmp1(0)(7 downto 0); b(1) <= b_tmp1(1)(11 downto 4);
b(2) <= b_tmp1(2)(11 downto 4); b(3) <= b_tmp1(3)(11 downto 4);
b(4) <= b_tmp1(4)(11 downto 4); b(5) <= b_tmp1(5)(11 downto 4);
b(6) <= b_tmp1(6)(11 downto 4); b(7) <= b_tmp1(7)(11 downto 4);
b(8) <= b_tmp1(8)(11 downto 4);
when 28 => --rotate back the initial state
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(3) <= a(0) & b(0);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 29 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000100";
req_xmit_q( req_xmit_q_last )(3) <= a(1) & b(1);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 30 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000001";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(3) <= a(2) & b(2);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 32 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(3) <= a(6) & b(6);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 35 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000100";
req_xmit_q( req_xmit_q_last )(3) <= a(7) & b(7);
if( req_xmit_q_last = 3 ) then
req_xmit_q_last <= 0;
else
req_xmit_q_last <= req_xmit_q_last + 1;
end if;
when 38 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000011";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -