📄 scinode2.vhd
字号:
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 51 =>
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(6) <= b_tmp(6); b(7) <= b_tmp(7); b(8) <= b_tmp(8);
b(0) <= b_tmp(0); b(1) <= b_tmp(1); b(2) <= b_tmp(2);
when 53 =>
a_tmp(0) <= a(0); b_tmp(0) <= b(0);
a_tmp(3) <= a(3); b_tmp(3) <= b(3);
a_tmp(6) <= a(6); b_tmp(6) <= b(6);
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000000";
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 54 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
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(4) & b(4);
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 55 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000110";
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 57 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000000";
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 60 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
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(5) & b(5);
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 63 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000110";
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 76 => --finish row lookstep
-- a(1) <= a_tmp(1); a(2) <= a_tmp(2);
-- a(4) <= a_tmp(4); a(5) <= a_tmp(5);
-- a(7) <= a_tmp(7); a(8) <= a_tmp(8);
-- b(1) <= b_tmp(1); b(2) <= b_tmp(2);
-- b(4) <= b_tmp(4); b(5) <= b_tmp(5);
-- b(7) <= b_tmp(7); b(8) <= b_tmp(8);
-- when 77 => --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(3) <= (a_tmp(0)(7) & a_tmp(0) & "0000")
+ ( a_tmp(3)*w1_r) - ( b_tmp(3)*w1_c) + ( a_tmp(6)*w2_r) - ( b_tmp(6)*w2_c)
+ ( a_tmp(1)*w3_r) - ( b_tmp(1)*w3_c) + ( a_tmp(4)*w4_r) - (b_tmp(4)*w4_c) + (a_tmp(7)*w5_r)
- (b_tmp(7)*w5_c) + (a_tmp(2)*w6_r) - (b_tmp(2)*w6_c) + (a_tmp(5)*w7_r )- (b_tmp(5)*w7_c)
+ (a_tmp(8)*w8_r) - (b_tmp(8)*w8_c);
b_tmp1(3) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(3)*w1_r + a_tmp(3)*w1_c + b_tmp(6)*w2_r + a_tmp(6)*w2_c
+ b_tmp(1)*w3_r + a_tmp(1)*w3_c + b_tmp(4)*w4_r + a_tmp(4)*w4_c + b_tmp(7)*w5_r
+ a_tmp(7)*w5_c + b_tmp(2)*w6_r + a_tmp(2)*w6_c + b_tmp(5)*w7_r + a_tmp(5)*w7_c
+ b_tmp(8)*w8_r + a_tmp(8)*w8_c;
a_tmp1(6) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(3)*w2_r - b_tmp(3)*w2_c + a_tmp(6)*w4_r - b_tmp(6)*w4_c
+ a_tmp(1)*w6_r - b_tmp(1)*w6_c + a_tmp(4)*w8_r - b_tmp(4)*w8_c + a_tmp(7)*w1_r
- b_tmp(7)*w1_c + a_tmp(2)*w3_r - b_tmp(2)*w3_c + a_tmp(5)*w5_r - b_tmp(5)*w5_c
+ a_tmp(8)*w7_r - b_tmp(8)*w7_c;
b_tmp1(6) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(3)*w2_r + a_tmp(3)*w2_c + b_tmp(6)*w4_r + a_tmp(6)*w4_c
+ b_tmp(1)*w6_r + a_tmp(1)*w6_c + b_tmp(4)*w8_r + a_tmp(4)*w8_c + b_tmp(7)*w1_r
+ a_tmp(7)*w1_c + b_tmp(2)*w3_r + a_tmp(2)*w3_c + b_tmp(5)*w5_r + a_tmp(5)*w5_c
+ b_tmp(8)*w7_r + a_tmp(8)*w7_c;
a_tmp1(1) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(3)*w3_r - b_tmp(3)*w3_c + a_tmp(6)*w6_r - b_tmp(6)*w6_c
+ (a_tmp(1)(7) & a_tmp(1) & "0000" ) + a_tmp(4)*w3_r - b_tmp(4)*w3_c + a_tmp(7)*w6_r - b_tmp(7)*w6_c
+ (a_tmp(2)(7) & a_tmp(2) & "0000" ) + a_tmp(5)*w3_r - b_tmp(5)*w3_c + a_tmp(8)*w6_r - b_tmp(8)*w6_c;
b_tmp1(1) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(3)*w3_r + a_tmp(3)*w3_c + b_tmp(6)*w6_r + a_tmp(6)*w6_c
+ (b_tmp(1)(7) & b_tmp(1) & "0000") + b_tmp(4)*w3_r + a_tmp(4)*w3_c + b_tmp(7)*w6_r + a_tmp(7)*w6_c
+ (b_tmp(2)(7) & b_tmp(2) & "0000") + b_tmp(5)*w3_r + a_tmp(5)*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(3)*w4_r - b_tmp(3)*w4_c + a_tmp(6)*w8_r - b_tmp(6)*w8_c
+ a_tmp(1)*w3_r - b_tmp(1)*w3_c + a_tmp(4)*w7_r - b_tmp(4)*w7_c + a_tmp(7)*w2_r
- b_tmp(7)*w2_c + a_tmp(2)*w6_r - b_tmp(2)*w6_c + a_tmp(5)*w1_r - b_tmp(5)*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(3)*w4_r + a_tmp(3)*w4_c + b_tmp(6)*w8_r + a_tmp(6)*w8_c
+ b_tmp(1)*w3_r + a_tmp(1)*w3_c + b_tmp(4)*w7_r + a_tmp(4)*w7_c + b_tmp(7)*w2_r
+ a_tmp(7)*w2_c + b_tmp(2)*w6_r + a_tmp(2)*w6_c + b_tmp(5)*w1_r + a_tmp(5)*w1_c
+ b_tmp(8)*w5_r + a_tmp(8)*w5_c;
a_tmp1(7) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(3)*w5_r - b_tmp(3)*w5_c + a_tmp(6)*w1_r - b_tmp(6)*w1_c
+ a_tmp(1)*w6_r - b_tmp(1)*w6_c + a_tmp(4)*w2_r - b_tmp(4)*w2_c + a_tmp(7)*w7_r
- b_tmp(7)*w7_c + a_tmp(2)*w3_r - b_tmp(2)*w3_c + a_tmp(5)*w8_r - b_tmp(5)*w8_c
+ a_tmp(8)*w4_r - b_tmp(8)*w4_c;
b_tmp1(7) <= (b_tmp(0)(7) & b_tmp(0) & "0000" )
+ b_tmp(3)*w5_r + a_tmp(3)*w5_c + b_tmp(6)*w1_r + a_tmp(6)*w1_c
+ b_tmp(1)*w6_r + a_tmp(1)*w6_c + b_tmp(4)*w2_r + a_tmp(4)*w2_c + b_tmp(7)*w7_r
+ a_tmp(7)*w7_c + b_tmp(2)*w3_r + a_tmp(2)*w3_c + b_tmp(5)*w8_r + a_tmp(5)*w8_c
+ b_tmp(8)*w4_r + a_tmp(8)*w4_c;
a_tmp1(2) <= (a_tmp(0)(7) & a_tmp(0) & "0000" )
+ a_tmp(3)*w6_r - b_tmp(3)*w6_c + a_tmp(6)*w3_r - b_tmp(6)*w3_c
+ (a_tmp(1)(7) & a_tmp(1) & "0000") + a_tmp(4)*w6_r - b_tmp(4)*w6_c + a_tmp(7)*w3_r - b_tmp(7)*w3_c
+ (a_tmp(2)(7) & a_tmp(2) & "0000") + a_tmp(5)*w6_r - b_tmp(5)*w6_c + a_tmp(8)*w3_r - b_tmp(8)*w3_c;
b_tmp1(2) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(3)*w6_r + a_tmp(3)*w6_c + b_tmp(6)*w3_r + a_tmp(6)*w3_c
+ (b_tmp(1)(7) & b_tmp(1) & "0000") + b_tmp(4)*w6_r + a_tmp(4)*w6_c + b_tmp(7)*w3_r + a_tmp(7)*w3_c
+ (b_tmp(2)(7) & b_tmp(2) & "0000") + b_tmp(5)*w6_r + a_tmp(5)*w6_c + b_tmp(8)*w3_r + a_tmp(8)*w3_c;
a_tmp1(5) <= (a_tmp(0)(7) & a_tmp(0) & "0000")
+ a_tmp(3)*w7_r - b_tmp(3)*w7_c + a_tmp(6)*w5_r - b_tmp(6)*w5_c
+ a_tmp(1)*w3_r - b_tmp(1)*w3_c + a_tmp(4)*w1_r - b_tmp(4)*w1_c + a_tmp(7)*w8_r
- b_tmp(7)*w8_c + a_tmp(2)*w6_r - b_tmp(2)*w6_c + a_tmp(5)*w4_r - b_tmp(5)*w4_c
+ a_tmp(8)*w2_r - b_tmp(8)*w2_c;
b_tmp1(5) <= (b_tmp(0)(7) & b_tmp(0) & "0000")
+ b_tmp(3)*w7_r + a_tmp(3)*w7_c + b_tmp(6)*w5_r + a_tmp(6)*w5_c
+ b_tmp(1)*w3_r + a_tmp(1)*w3_c + b_tmp(4)*w1_r + a_tmp(4)*w1_c + b_tmp(7)*w8_r
+ a_tmp(7)*w8_c + b_tmp(2)*w6_r + a_tmp(2)*w6_c + b_tmp(5)*w4_r + a_tmp(5)*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(3)*w8_r - b_tmp(3)*w8_c + a_tmp(6)*w7_r - b_tmp(6)*w7_c
+ a_tmp(1)*w6_r - b_tmp(1)*w6_c + a_tmp(4)*w5_r - b_tmp(4)*w5_c + a_tmp(7)*w4_r
- b_tmp(7)*w4_c + a_tmp(2)*w3_r - b_tmp(2)*w3_c + a_tmp(5)*w2_r - b_tmp(5)*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(3)*w8_r + a_tmp(3)*w8_c + b_tmp(6)*w7_r + a_tmp(6)*w7_c
+ b_tmp(1)*w6_r + a_tmp(1)*w6_c + b_tmp(4)*w5_r + a_tmp(4)*w5_c + b_tmp(7)*w4_r
+ a_tmp(7)*w4_c + b_tmp(2)*w3_r + a_tmp(2)*w3_c + b_tmp(5)*w2_r + a_tmp(5)*w2_c
+ b_tmp(8)*w1_r + a_tmp(8)*w1_c;
when 78 =>
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 80 => --rotate back the initial state
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000000";
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 81 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
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(4) & b(4);
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 82 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000000101";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000110";
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 84 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000000";
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 87 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
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(5) & b(5);
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 90 =>
req_xmit_q( req_xmit_q_last )(0) <= "0000000000001000";
req_xmit_q( req_xmit_q_last )(1) <= "0000000000000000";
req_xmit_q( req_xmit_q_last )(2) <= "0000000000000110";
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 103 =>
-- a(0) <= a_tmp(0);
a(1) <= a_tmp(1); a(2) <= a_tmp(2);
-- a(3) <= a_tmp(3);
a(4) <= a_tmp(4); a(5) <= a_tmp(5);
-- a(6) <= a_tmp(6);
a(7) <= a_tmp(7); a(8) <= a_tmp(8);
-- b(0) <= b_tmp(0);
b(1) <= b_tmp(1); b(2) <= b_tmp(2);
-- b(3) <= b_tmp(3);
b(4) <= b_tmp(4); b(5) <= b_tmp(5);
-- b(6) <= b_tmp(6);
b(7) <= b_tmp(7); b(8) <= b_tmp(8);
when others =>
end case;
end if;
end if;
end process;
process( horizontal_data_in, vertical_data_in, data_out )
begin
case global_cnt is
when 0 to 51 =>
data_in <= horizontal_data_in;
horizontal_data_out <= data_out;
vertical_data_out <= "1111111111111111";
when others =>
data_in <= vertical_data_in;
vertical_data_out <= data_out;
horizontal_data_out <= "1111111111111111";
end case;
end process;
end spec;
configuration test of scinode2 is
for spec
end for;
end test;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -