本人的eda课程设计,希望对大家有帮助。
其中包含matlab的仿真
modelsim的仿真
以及vhdl代码以及测试文件
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fir is
port(
--input
clk,rst:in std_logic;
fir_in:in std_logic_vector(11 downto 0);
--output
fir_out:out std_logic_vector(26 downto 0)
);
end fir;
architecture rtl of fir is
--定义12位的fir_in_reg
signal fir_in_reg: std_logic_vector(11 downto 0);
--定义13位的shift_buf 的8个数组
subtype bit13 is std_logic_vector(12 downto 0);
type z8 is array(0 to 7) of bit13; --type z8 is array(0 to 7) of std_logic_vector(12 downto 0);可以吗????????????
signal shift_buf: z8;
--定义13位的加法寄存器 4个数组
type add4 is array(0 to 3) of bit13;
signal add_buf: add4;
--定义13位的移位reg 4个数组
type shift4 is array(0 to 3) of bit13;
signal state_shift_buf: shift4;
--用于LUT的输入(4位)
signal table_4b: std_logic_vector(3 downto 0);
--LUT的输出(12位)
signal table_out_12b: std_logic_vector(11 downto 0);
--sum(27位)
signal sum: std_logic_vector(26 downto 0);
--用于控制的信号
signal divfre_count_4b: std_logic_vector(3 downto 0);
signal clk_13: std_logic;
signal state_reg: std_logic;
--lut相关的信号
signal sign_ex: std_logic_vector(26 downto 0);
--与除2器有关信号
signal delta_in: std_logic_vector(3 downto 0);
signal delta_out: std_logic_vector(26 downto 0);
begin
--divfre_count_4b与clk_13寄存器
process(clk,rst)
begin
if(rst='1') then
divfre_count_4b<="0000";
clk_13<='0';
elsif(clk'event and clk='1') then
if(divfre_count_4b="1101") then
divfre_count_4b<="0000";
clk_13<='1';
else
divfre_count_4b<=divfre_count_4b+'1';
clk_13<='0';
end if;
end if;
end process;
--数据输入寄存器 fir_in_reg 12位
process(clk,rst,fir_in)
begin
if(rst='1') then
fir_in_reg<="000000000000";
elsif(clk'event and clk='1') then
if(clk_13='1') then
fir_in_reg<=fir_in;
end if;
end if;
end process;
--13位宽的shift_buf 的8个数组
process(clk,rst,fir_in_reg)
begin
if(rst='1') then
for i in 0 to 7 loop
shift_buf(i)<="0000000000000";
end loop;
elsif(clk'event and clk='1') then
if(clk_13='1') then
for i in 0 to 6 loop
shift_buf(i+1)<=shift_buf(i);
end loop;
shift_buf(0)(11 downto 0)<=fir_in_reg;
shift_buf(0)(12)<=fir_in_reg(11);
end if;
end if;
end process;
--add_buf:13位宽 4个数组
process(clk,rst,shift_buf)
begin
if(rst='1') then
for i in 0 to 3 loop
add_buf(i)<="0000000000000";
end loop;
elsif(clk'event and clk='1') then
if(clk_13='1') then
for i in 0 to 3 loop
add_buf(i)<=shift_buf(i)+shift_buf(7-i);--对称系数,相加。
end loop;
end if;
end if;
end process;
--state_shift_buf 13位宽,4个数组
process(clk,rst,add_buf)
begin
if(rst='1') then
for i in 0 to 3 loop
state_shift_buf(i)<="0000000000000";
end loop;
state_reg<='0';
elsif(clk'event and clk='1') then
case state_reg is
when '0'=>
for i in 0 to 3 loop
state_shift_buf(i)<=add_buf(i);
end loop;
state_reg<='1';
when '1'=>
if(divfre_count_4b="1101") then
state_reg<='0';
else
for i in 0 to 11 loop
--实现了四个12位移位寄存器(13位是符号为,不参与移位)
state_shift_buf(0)(i)<=state_shift_buf(0)(i+1);
state_shift_buf(1)(i)<=state_shift_buf(1)(i+1);
state_shift_buf(2)(i)<=state_shift_buf(2)(i+1);
state_shift_buf(3)(i)<=state_shift_buf(3)(i+1);
end loop;
state_reg<='1';
end if;
when others=>
end case;
end if;
end process;
--table_4b,LUT输入
table_4b(0)<=state_shift_buf(0)(0);
table_4b(1)<=state_shift_buf(1)(0);
table_4b(2)<=state_shift_buf(2)(0);
table_4b(3)<=state_shift_buf(3)(0);
--LUT完成固定系数的乘法器
process(table_4b)
begin
case table_4b is
when "0000"=>table_out_12b<="000000000000";
when "0001"=>table_out_12b<="000000101001";--41
when "0010"=>table_out_12b<="000010000100";--132
when "0011"=>table_out_12b<="000010101101";--173
when "0100"=>table_out_12b<="000101010101";--341
when "0101"=>table_out_12b<="000101111110";--382
when "0110"=>table_out_12b<="000111011001";--473
when "0111"=>table_out_12b<="001000000010";--514
when "1000"=>table_out_12b<="001111111110";--514
when "1001"=>table_out_12b<="001000100111";--551
when "1010"=>table_out_12b<="001010000010";--642
when "1011"=>table_out_12b<="001010101011";--683
when "1100"=>table_out_12b<="001101010011";--851
when "1101"=>table_out_12b<="001101111100";--892
when "1110"=>table_out_12b<="001111010111";--983
when "1111"=>table_out_12b<="010000000000";--1024
when others=>table_out_12b<="000000000000";
end case;
end process;
--sign_ex的26到12位等于table_out_12b(11);以后的位等于table_out_12b;
sign_ex(26)<=table_out_12b(11);
sign_ex(25)<=table_out_12b(11);
sign_ex(24)<=table_out_12b(11);
sign_ex(23)<=table_out_12b(11);
sign_ex(22)<=table_out_12b(11);
sign_ex(21)<=table_out_12b(11);
sign_ex(20)<=table_out_12b(11);
sign_ex(19)<=table_out_12b(11);
sign_ex(18)<=table_out_12b(11);
sign_ex(17)<=table_out_12b(11);
sign_ex(16)<=table_out_12b(11);
sign_ex(15)<=table_out_12b(11);
sign_ex(14)<=table_out_12b(11);
sign_ex(13)<=table_out_12b(11);
sign_ex(12)<=table_out_12b(11);
sign_ex(11 downto 0)<=table_out_12b;
--除2组合电路
delta_in<=divfre_count_4b-"0001";
with delta_in select
delta_out<= sign_ex when "0000",
sign_ex(25 downto 0)&'0' when "0001",
sign_ex(24 downto 0)&"00" when "0010",
sign_ex(23 downto 0)&"000" when "0011",
sign_ex(22 downto 0)&"0000" when "0100",
sign_ex(21 downto 0)&"00000" when "0101",
sign_ex(20 downto 0)&"000000" when "0110",
sign_ex(19 downto 0)&"0000000" when "0111",
sign_ex(18 downto 0)&"00000000" when "1000",
sign_ex(17 downto 0)&"000000000" when "1001",
sign_ex(16 downto 0)&"0000000000" when "1010",
sign_ex(15 downto 0)&"00000000000" when "1011",
sign_ex(14 downto 0)&"000000000000" when "1100",
sign_ex(13 downto 0)&"0000000000000" when "1101",
sign_ex(12 downto 0)&"00000000000000" when "1110",
sign_ex(11 downto 0)&"000000000000000" when "1111",
sign_ex when others;
--sum 27位
process(clk,rst,delta_out)
begin
if(rst='1') then
sum<="000000000000000000000000000";
elsif(clk'event and clk='1') then
if(divfre_count_4b="0000") then
sum<="000000000000000000000000000";
elsif(divfre_count_4b="1101") then
sum<=sum-delta_out;
else
sum<=sum+delta_out;
end if;
end if;
end process;
--27位输出寄存器
process(clk,rst,sum)
begin
if(rst='1') then
fir_out<="000000000000000000000000000";
elsif(clk'event and clk='1') then
if(divfre_count_4b="0000") then
fir_out<=sum;
end if;
end if;
end process;
end rtl;
测试代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library std;
use std.textio.all;
entity fir_tb is
generic (
DEPTH : integer := 4096;-- ROM depth
ROMFILE : string := "D:\pro\MOD\fir\OLDLEE.HEX";
INFILE : string := "D:\pro\edaks\mod\input.txt";
OUTFILE : string := "D:\pro\edaks\mod\OUTPUT.txt"
);
end fir_tb;
architecture rtl of fir_tb is
component fir port(
clk,rst:in std_logic;
fir_in:in std_logic_vector(11 downto 0);
fir_out:out std_logic_vector(26 downto 0)
);
end component;
--dr_input
signal dr_fir_in: std_logic_vector(11 downto 0) :="000000000000" ;
signal dr_clk: std_logic :='0' ;
signal dr_rst: std_logic :='1' ;
signal dr_clk_14: std_logic :='0' ;
--output
signal dr_fir_out: std_logic_vector(26 downto 0);
--type TEXT is file of string;
file input : text is out INFILE;
file output : text is out OUTFILE;
type memory is array (0 to DEPTH-1) of std_logic_vector(7 downto 0);
signal store: memory;
signal initialized: boolean := false;
signal count: std_logic_vector(11 downto 0);
-- Converts std_logic_vector to natural
function to_nat (input : std_logic_vector) return natural is
variable result : natural;
variable weight : natural;
begin
result:=0;
weight:=1;
for i in input'LOW to input'HIGH loop
if (input(i)='1' or input(i)='H') then
result := result + weight;
end if;
weight := weight * 2;
end loop;
return result;
end to_nat;
-- Converts hexadecimal string to natural
function to_nat (input : string) return natural is
variable result : natural;
begin
result:=0;
for i in input'LEFT to input'RIGHT loop
result := result * 16;
case input(i) is
when '0' => result := result + 0;
when '1' => result := result + 1;
when '2' => result := result + 2;
when '3' => result := result + 3;
when '4' => result := result + 4;
when '5' => result := result + 5;
when '6' => result := result + 6;
when '7' => result := result + 7;
when '8' => result := result + 8;
when '9' => result := result + 9;
when 'A' => result := result + 10;
when 'B' => result := result + 11;
when 'C' => result := result + 12;
when 'D' => result := result + 13;
when 'E' => result := result + 14;
when 'F' => result := result + 15;
when others => null;
end case;
end loop;
return result;
end to_nat;
-- Converts hexadecimal string to binary vector
function to_std_logic_vector (input : string)
return std_logic_vector is
variable result : std_logic_vector(0 to 4*input'LENGTH-1);
begin
result := (others => '0');
for i in input'LEFT to input'RIGHT loop
case input(i) is
when '0' => result((i-1)*4 to 3+(i-1)*4):="0000";
when '1' => result((i-1)*4 to 3+(i-1)*4):="0001";
when '2' => result((i-1)*4 to 3+(i-1)*4):="0010";
when '3' => result((i-1)*4 to 3+(i-1)*4):="0011";
when '4' => result((i-1)*4 to 3+(i-1)*4):="0100";
when '5' => result((i-1)*4 to 3+(i-1)*4):="0101";
when '6' => result((i-1)*4 to 3+(i-1)*4):="0110";
when '7' => result((i-1)*4 to 3+(i-1)*4):="0111";
when '8' => result((i-1)*4 to 3+(i-1)*4):="1000";
when '9' => result((i-1)*4 to 3+(i-1)*4):="1001";
when 'A' => result((i-1)*4 to 3+(i-1)*4):="1010";
when 'B' => result((i-1)*4 to 3+(i-1)*4):="1011";
when 'C' => result((i-1)*4 to 3+(i-1)*4):="1100";
when 'D' => result((i-1)*4 to 3+(i-1)*4):="1101";
when 'E' => result((i-1)*4 to 3+(i-1)*4):="1110";
when 'F' => result((i-1)*4 to 3+(i-1)*4):="1111";
when others => null;
end case;
end loop;
return result;
end to_std_logic_vector;
-- Initializing memory contents :
function initmem return memory is
file source : text is in ROMFILE;
variable row : line;
variable char : character;
variable addr : string(1 to 4);
variable data : string(1 to 2);
variable data1 : string(1 to 2);
variable number : natural;
variable address : natural;
variable checksum : natural;
variable sum : natural;
variable vector : std_logic_vector(7 downto 0);
variable mem : memory;
begin
for i in mem'range loop
mem(i) := (others => '0');
end loop;
while not endfile(source) loop
readline(source, row);
if row'LENGTH>1 and row(1)=':' then
READ(row, char);
READ(row, data);
number:=to_nat(data);
sum :=number;
READ(row, data);
checksum :=to_nat(data);
sum :=(sum+checksum) mod 256;
READ(row, data1);
checksum :=to_nat(data1);
sum :=(sum+checksum) mod 256;
addr :=data & data1;
address :=to_nat(addr);
READ(row, data);
checksum :=to_nat(data);
sum :=(sum+checksum) mod 256;
while number>0 loop
READ(row, data);
vector :=to_std_logic_vector(data);
checksum :=to_nat(data);
sum :=(sum+checksum) mod 256;
mem(address) := vector;
address :=address+1;
number :=number-1;
end loop;
READ(row, data);
checksum :=to_nat(data);
sum :=(sum+checksum) mod 256;
assert (sum=0)
report "Invalid check sum" &
" in the program memory init file."
severity error;
end if;
end loop;
return mem;
end initmem;
begin
fir1: fir port map(clk=>dr_clk,rst=>dr_rst,fir_in=>dr_fir_in,fir_out=>dr_fir_out);
process(dr_clk)
begin
dr_clk<=not dr_clk after 10 ns;
end process;
process(dr_clk_14)
begin
dr_clk_14<=not dr_clk_14 after 140 ns;
end process;
process
begin
dr_rst<='0' after 25 ns;
wait;
end process;
--init_rom_proc :
process
variable storevar : memory;
begin
if not initialized then
storevar := initmem;
initialized <= true;
end if;
store <= storevar;
wait ; -- wait forever ...
end process;
read_rom_proc :
process (dr_clk_14)
variable count : integer :=0;
variable doutvar : std_logic_vector(7 downto 0);
begin
if (dr_clk_14'event and dr_clk_14 = '1') then
if(count=4096) then
else
doutvar := store(count);
count:=count+1;
end if;
end if;
dr_fir_in <= '0'&'0'&'0'&'0'&doutvar;
end process;
process (dr_clk_14)
variable inline : LINE;
variable outline : LINE;
variable outdata : integer :=0;
variable indata : integer :=0;
begin
if (dr_clk_14'event and dr_clk_14 = '1') then
outdata :=CONV_INTEGER(dr_fir_out);
indata:=CONV_INTEGER(dr_fir_in);
write(outline,outdata);
write(outline,string'(" "));
write(inline,indata);
write(inline,string'(" "));
writeline(input,inline);
writeline(output,outline);
end if;
end process;
end rtl;
matlab
in=[
....];
out=[
....];
out=out/2048;
t0=0:length(in)-1;
t1=0:length(out)-1;
plot(t0, in, '-r', t1, out, ':b');%'-r'表示红色线;':b'表示虚蓝线
title('输入输出信号的时域曲线 红色线表示输入 蓝色线表示输出');
xlabel('t');
ylabel('abs');
axis([0,4096,0,max(max(in),max(out))]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fin=fft(in);
fout=fft(out);
ft0=0:length(fin)-1;
ft1=0:length(fout)-1;
fabs=abs(fin);
f_in_abs=abs(fin);
f_out_abs=abs(fout);
%plot(ft0,f_in_abs);%
%plot(ft1,f_out_abs);%
plot(ft0,f_in_abs, '-r',ft1,f_out_abs, ':b');%'-r'表示红色线;':b'表示虚蓝线
title('输入输出信号的频域曲线 红色线表示输入 蓝色线表示输出');
xlabel('f');
ylabel('abs');
测试文件读入的hex文件
:0900000002239DE4F512F5132220 :10000B0002287E1200009033727401F09035BB12FF :05001B002A2102242946 :10002300022974EC4D6011E8497017ED33EC330489 :04003300600DE4FC7C :10003800FEFD22E933E8330470F802019F12016AD9 :1000480058046009E4CC248150062850090201A90B :100058002840030201A6C0E0EB4A7044B98006D0EC :0D006800E0FB020195EF4E701CBD8008EB1F :10007600EAFEE9FD80EBE98DF0A4FEE5F002010F52 :06008600E9CDF9EAFEEBF2 :0C008D00EF89F0A4FCE5F0CE89F0A42E71 :10009A00E435F0CD89F0A42DFEE435F08067EF4E0B :1000AA007005BD80D780C3EF8BF0A4ACF0EE8BF067 :1000BA00A42CFCE435F0F8EF8AF0A42CE5F038FC27 :1000CA00E433CB8DF0A42CFCE5F03BF8EE8AF0A4E7 :1000DA002CFCE5F038F8E433CF89F0A42CFCE5F0E9 :0900EA0038CF3400CE89F0A42FB8 :1000F400E5F03EFEE433C98DF0A42EFEE5F039CDE3 :040104008AF0A42FAA :10010900E5F03EFEE43DFD33D0E0FB50070BBB00BC :090119000F0201A9EC2CFCEF33EC :10012300EE33FEED33FD02018175F020800E75F094 :1001330010800575F0087D007E007F003392D53076 :0B014300D503120806EC334010EF3328 :10014F00EE33FEED33FDEC33FCD5F0ED22E5F0247C :09015F007EA2D513CC92E7CDCEAF :1001690022E9D2E7C933E833F892D5EDD2E7CD33A6 :10017900EC33FC5002B2D522EC30E7100FBF000C73 :100189000EBE00080DBD00040BEB6014A2D5EB13E5 :07019900FCED92E7FD22746A :0301A100FCFDFE64 :0701A50022E480F8A2D574EA :1001AD0013FC7D80E480EFF920E73624F9500379C4 :1001BD0007E4F42402FBE582158270021583DBF659 :1001CD00E024FB501BE96014E4F0E5821582700217 :1001DD001583E004F0B40A08E4F0D9EE7401F00AD6 :0E01ED0022C2D522ED33EC3392D5FA602AB44B :0501FC0033EDC2E77BBA :1002020060067A027916E4227A02791F20D5047AEE :1002120002791A224E614E002B494E46002D494E5C :100222004600E47A08F0A3DAFC7B00740722C0835C :10023200C082ECC0E0EDC0E0EEC0E0EFC0E0EA75E5 :10024200F010A4CAABF075F04DA42BFBE435F0FC22 :10025200EA2410FAEB34C5FBEC34D9FCEDC2E7FF1B :1002620075F056A4F42411C5F0F434C58FF0A42A15 :0E027200E5F03BE43CF020E7141204BED0E0BF :10028100D0E0FED0E0FDD0E0FC1203F18014F404D4 :050291001204BED0E0E4 :10029700D0E0FED0E0FDD0E0FC120026D082D08373 :1002A700E0FAEDD2E7CD33EC332482FBE4C3CF335E :1002B700CFCE33CECD33CD33DBF37B0775F00A8456 :1002C7006004F0A31B0AE5F0F0A38FF0740AA4FF03 :1002D700ACF08EF0740AA42CFEACF050010C8DF03B :1002E700740AA42CFDE435F0F0A3DBDE74072202C8 :1002F700019FE86480F8E933E83360110460F0EDAA :0C03070033EC337009E8FCE9FDEAFEEB82 :10031400220460DED3EB9FEA9EE99DE8C2E78CF0FD :10032400C2F795F0400CE8CCF8E9CDF9EACEFAEB47 :10033400CFFB12016A85D0F05804700320D5B3E8CE :100344000470075002B2D50201A992D5EC0460F7FB :10035400E4CCC0E0C398F8603B94186008400DD02A :10036400E0FB020181E4FBFAC9FC8028E830E406E2 :10037400E4C9FBE4CAFCE830E305E4C9CACBFCE801 :1003840054076010F8C3E913F9EA13FAEB13FBEC12 :0D03940013FCD8F130F52FC3E49CFCEF9B67 :1003A200EE9AFEED99FDD0E0FBEF4E4D4C7012221D :0A03B200DB030201A6EC2CFCEF3384 :1003BD00EE33FEED33FDED30E7EB020181EF2BFF68 :1003CD00EE3AFEED39FDD0E0FB50130BBB000302FE :0A03DD0001A9ED13FDEE13FEEF136E :1003E800EC13FC0201810201A9EC5D046005E859E7 :1003F80004700302019F12016A580460F6EC486019 :06040800F2EC7004FDFEA1 :10040F0022C860DB2481C85009C3986002500602DD :10041F0001A69850CAF582E9294B4A7005AB8202B2 :10042F00019575F0007C1A7880C3EF9BEE9AED99D9 :05043F00400DC3EF9B1E :10044500EE9AFEED99FDE842F0DC23ACF0D0E0FF3A :10045500D0E0FED0E0FDAB8220E7101BEB60BAECEC :040465002CFCEF3349 :10046A00EE33FEED33FD020181E803F830E705C003 :06047A00F075F000EF2F09 :10048100EE33FEED33FD40B830E7C280AA3F800075 :10049100004120000042C80000447A0000461C4090 :1004A1000047C35000497424004B1896804CBEBCD1 :1004B100205A0E1BCA6753C21C749DC5AEFB600651 :1004C1005407601C23231204ECEB54386009120416 :1004D100D81204E7120026ECF8EDF9EEFAEFCB2280 :1004E100EB1204E780F1543803241C90048EFE9330 :0B04F100FC0EEE93FD0EEE930ECE937A :1004FD0022BB010689828A83E0225002E722BBFEDD :10050D0002E32289828A83E49322BB010CE58229CE :10051D00F582E5833AF583E0225006E92582F8E677 :10052D0022BBFE06E92582F8E222E58229F582E565 :10053D00833AF583E49322BB010689828A83F022F4 :10054D005002F722BBFE01F322F8BB010DE5822913 :10055D00F582E5833AF583E8F0225006E92582C855 :10056D00F622BBFE05E92582C8F222EF8DF0A4A884 :10057D00F0CF8CF0A428CE8DF0A42EFE22BC000B63 :07058D00BE0029EF8DF08490 :0B059500ADF022E4CCF875F008EF2F69 :1005A100EE33FEEC33FCEE9DEC984005FCEE9DFE37 :1005B1000FD5F0E9E4CEFD22EDF8F5F0EE8420D27E :0905C1001CFEADF075F008EF2FEF :1005CB00ED33FD4007985006D5F0F222C398FD0F8E :1005DB00D5F0EA22C5F0F8A3E028F0C5F0F8E582E3 :1005EB00158270021583E038F022A3F8E0C5F025E0 :1005FB00F0F0E582158270021583E0C838F0E8222E :10060B00BB0110E58229F582E5833AF583E0F5F02D :10061B00A3E0225009E92582F886F008E622BBFE0A :10062B000AE92582F8E2F5F008E222E5832AF58350 :10063B00E993F5F0A3E99322BB010DC58229C5828D :10064B00C5833AC5830205DF5011C58229F808E539 :10065B00F026F618F5F0E58236F622BBFE11C582C0 :10066B0029F808E225F0F5F0F218E23582F222F8CB :10067B00E58229F582E5832AF58374019325F0F54C :10068B00F0E4933822BB010A89828A83F0E5F0A358 :10069B00F0225006F709A7F01922BBFE06F3E5F08E :1006AB0009F31922F8BB0111E58229F582E5833A9A :1006BB00F583E8F0E5F0A3F0225009E92582C8F6AE :1006CB0008A6F022BBFE09E92582C8F2E5F008F284 :0306DB0022EF2BE0 :1006DF00EE3AFEED39FDEC38FC22E88FF0A4CC8B1E :1006EF00F0A42CFCE98EF0A42CFC8AF0EDA42CFCD9 :1006FF00EA8EF0A4CDA8F08BF0A42DCC3825F0FD18 :10070F00E98FF0A42CCD35F0FCEB8EF0A4FEA9F010 :10071F00EB8FF0A4CFC5F02ECD39FEE43CFCEAA45C :10072F002DCE35F0FDE43CFC2275F008758200EF0C :01073F002F8A :10074100EE33FECD33CDCC33CCC58233C5829BEDA8 :100751009AEC99E58298400CF582EE9BFEED9AFDAC :10076100EC99FC0FD5F0D6E4CEFBE4CDFAE4CCF95C :10077100A88222B800C1B90059BA002DEC8BF084CF :0C078100CFCECDFCE5F0CBF97818EF2FBF :10078E00EE33FEED33FDEC33FCEB33FB10D7039968 :10079E004004EB99FB0FD8E5E4F9FA227818EF2F15 :1007AF00EE33FEED33FDEC33FCC933C910D7059B97 :1007BF00E99A4007EC9BFCE99AF90FD8E0E4C9FAF3 :0907CF00E4CCFB2275F010EF2FC1 :1007D900EE33FEED33FDCC33CCC833C810D7079BBD :1007E900EC9AE899400AED9BFDEC9AFCE899F80F20 :1007F900D5F0DAE4CDFBE4CCFAE4C8F922C3E49FEE :10080A00E49EFEE49DFDE49CFC22EB9FF5F0EA9E4B :10081A0042F0E99D42F0EC6480C864809845F02279 :10082A00E8600FECC313FCED13FDEE13FEEF13FFAC :0D083A00D8F122E0FCA3E0FDA3E0FEA3E066 :1008480022ECF0A3EDF0A3EEF0A3EFF022A882854E :1008580083F0D083D08212086C12086C12086C12D4 :10086800086CE473E493A3C583C5F0C583C8C58247 :10087800C8F0A3C583C5F0C583C8C582C822A4250E :1008880082F582E5F03583F58322E0FBA3E0FAA345 :10089800E0F922F8E0FBA3A3E0F925F0F0E58215E2 :1008A8008270021583E0FA38F022F8E0FBA3A3E097 :1008B80025F0F9F0E582158270021583E038FAF028 :1008C80022EBF0A3EAF0A3E9F022BB010789828AB0 :1008D800830208925005E9F8020A7EBBFE05E9F892 :1008E800020AA089828A83020AC2BB011A89828A03 :1008F80083D0F0D0E0F8D0E0F9D0E0FAD0E0FBE81F :10090800C0E0C0F00208C95016E9F8D083D082D000 :10091800E0F9D0E0FAD0E0FBC082C083020A97BBBE :10092800FE16E9F8D083D082D0E0F9D0E0FAD0E022 :10093800FBC082C083020AB922BB010DE58229F5FA :1009480082E5833AF5830208925007E92582F80286 :100958000A7EBBFE07E92582F8020AA0E58229F58E :1009680082E5833AF583020AC2BB010DC58229C517 :1009780082C5833AC58302089B5008F8E92582C8D6 :10098800020A87BBFE08F8E92582C8020AA9C582BF :1009980029C582C5833AC583020AC2BB0120E58204 :1009A80029F582E5833AF583D0F0D0E0F8D0E0F974 :1009B800D0E0FAD0E0FBE8C0E0C0F00208C9501867 :1009C800E92582F8D083D082D0E0F9D0E0FAD0E0EF :1009D800FBC082C083020A97BBFE18E92582F8D0C3 :1009E80083D082D0E0F9D0E0FAD0E0FBC082C083A7 :1009F800020AB922D083D082F8E49370127401936A :100A0800700DA3A393F8740193F5828883E473743B :100A180002936860EFA3A3A380DFE5112582F58226 :100A2800E5103583F583B510048582112210AF06D1 :100A3800858211F51022858211F510D2AF22E511B9 :100A48002582F582E5103583F58322BB010A898268 :100A58008A83E0F5F0A3E022500687F009E719221F :100A6800BBFE07E3F5F009E3192289828A83E49340 :100A7800F5F074019322E6FB08E6FA08E6F922FA93 :100A8800E6FB0808E6F925F0F618E6CA3AF622EB7E :100A9800F608EAF608E9F622E2FB08E2FA08E2F9C3 :100AA80022FAE2FB0808E2F925F0F218E2CA3AF263 :100AB80022EBF208EAF208E9F222E493FB740193CC :100AC800FA740293F922E5082499F582E43436F59C :100AD80083E0050822903696300703903699E4752E :100AE800F00112089B0204FE2000E97F2ED200804C :0A0AF80018EF540F2490D43440D4BA :0D0B030030040BEF24BFB41A00500324612E :100B1100E50960021509050CE50C7002050B3007AB :100B21000E903696E475F00112089BEF020544021F :100B31002FE07403D2078003E4C207F508903696CC :100B41001208C9E4F509F50BF50CE50960077F20EA :070B5100120B1180F5750A7B :100B5900C201C200C202C203C205C206C208120A09 :010B6900DDAE :100B6B00700D3007057F00120B22AF0CAE0B22B4B9 :090B7B00255FC2D5C204120ADD97 :100B850024D0B40A00501A75F00A780930D5050842 :010B9500B6A9 :100B97000106C6A426F620D5047002D20380D92404 :100BA700CFB41A00EF5004C2E5D204020E14D201EA :100BB70080C6D20080C0D20280BCD2D580BAD2050E :100BC70080B47F20120B112002077401B509004081 :040BD700F1120ACE3F :100BDC00120B11020B4BD208D2068095120ACEFBD7 :100BEC00120ACEFA120ACEF94A4B700679127A0F13 :010BFC007B7D :100BFE0020022EE509602A7E008E82758300120582 :100C0E001760060EEE650A70F0C2D5EBC0E0EAC0C2 :100C1E00E0E9C0E0EE120E75D0E0F9D0E0FAD0E0D7 :040C2E00FB1204FEB3 :100C330060AAEBC0E0EAC0E0E9C0E0120B11D0E02B :100C43002401F9D0E03400FAD0E0FBE50A0460DCCB :100C5300D50AD98087D20280A2120E5760F7E50A1F :100C63007001041201B4A90A600DE50A600914F5C4 :030C73000A120E54 :100C7700EF60F3EA30E702F404C3995079EAF42508 :100C87000A0430E701E404F50A800D120E5760C12B :100C9700EA050A250A1201B4EA9036C5F030E701E1 :100CA700E4250A04D50A0420050114120E75E4C0D0 :030CB700E0120E3A :100CBB009036C5E0601320E70714F0120AF9802282 :100CCB0004F0D0E014C0E07F00120AF9E50A6007D7 :100CDB00120AF0150A800B300503120AF0D0E0025D :100CEB000B4BD0E00480C4120E57609EE50A041231 :100CFB0001B49036C5EAF0E50A2005026001042430 :050D0B0004120E7574D6 :050D110004C0E0120E19 :100D1700120AF9E50A2005026003120AF0D0E0B5CD :100D27000AE87F45120B039036C5E07F2B30E704B6 :100D37007F2DF404C0E0120B11D0E075F00A84C0D7 :100D4700F0120AFAD0E0120AFA020B4B791080026D :100D57007908C206C2088008D2D5790A8004790AC0 :0D0D6700C2D5E50A047002F50AE4FAFDFEAB :100D7500120ACEFC7B08200113120ACEFD7B10302F :090D8500000A120ACEFE120ACE89 :100D8F007B20EC3382D592D55013C3E43000069FFD :100DA000E49EFEE42001039DFDE49CFCE4CBF8C23C :100DB00001EC700CCFCECDCCE824F8F870F380179E :030DC000C3EF334B :100DC400EE33FEED33FDEC33FCEB33FB994002FBD9 :100DD4000FD8E9EB300105F8D0E0C448B201C0E017 :100DE4000AEC4D4E4F78207B0070C2EAB50A0040F1 :100DF400BCC0E0120E77D0F0D0E0200104C4C0E003 :100E0400C4B201C0F0120AFAD0F0D5F0EB020B4BD9 :100E14001209FC0BE8530D53580BB94C0BB5420D9A :100E2400574F0D5F440D5F490BCE430D65550C9232 :100E3400460CF2450C5C470F32500BBD2D0BC12EF6 :100E44000BE42B0BC5230BE2200F1B2A0B7D480060 :060E5400000BDCE50AB40E :100E5B0003750A06120ACEFC120ACEFD120ACEFE4A :030E6B00120ACE9A :100E6F009036BE0201F1790AA2D52003143005098C :100E7F00B910020404B9080104A2D52006025001DA :100E8F00042002689202B509005034C0E07F203080 :100E9F0003197F30A20272067205500F120ECEC2D6 :100EAF0002C206C205C2087F30800F300503E9C0B9 :100EBF00E0120B11300503D0E0F9D0E0B509CC30CA :100ECF0005177F30B9100C120B117F583004077FB4 :100EDF00788003B90803120B113002057F2D020B26 :100EEF00117F202008F87F2B2006F322920280CF5B :100EFF007F00B40700500B24BEF582E43436F5832F :010F0F00E001 :100F110022286E756C6C2900D201120ACE3001F8BC :100F2100C201780930D50108F6020B7D2D504349E5 :100F310058120ACE2403B405004001E4900F2D930A :100F4100120B02743A120B02D203750904020D53FB :010F5100900F :100F5300F8120A227B017A33797412230AA3A312AB :100F630008C97A337987900005120A461208C91214 :100F7300230AE4F0A3F012230AE0FEA3E0C39401E2 :100F8300EE9400503E900005122317C003C002C028 :100F93000112230AA3A31208921208F212230AA32E :100FA300A3A3E475F0131205DF900005120A46A30C :100FB300E475F0131205DF12230AE475F00112053C :100FC300DF80B312234BC003C002C00112230AA364 :100FD300A31208921208F27B017A33797490339A40 :100FE3001208C9900008020A22C2AF850D81122A95 :0B0FF3001E7484C0E07424C0E03222B1 :0200000400F00A :0100000000FF :00000001FF
文章评论(0条评论)
登录后参与讨论