




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于FPGA的等精度频率计 摘要:利用超高速硬件描述语言(VHDL)在现场可编程逻辑门阵列(FPGA)上编程实现的纯数字式等精度频率计,不但具有较高的测量精度,而且其测量精度不会随着被测信号频率的降低而下降。为了实现对任意信号进行频率测量,在前端输入加整形电路即可。关键字: VHDL FPGA 等精度 波形整形串行BCD码除法 Design of the Cymometer Based on FPGAAbstract: The cymoneter that be implemented with using the VHDL (Very High Speed Integrated Hardw
2、are Description Language) to program into the FPGA (Field Programmable Gate Array )chip,it not only has high precision,but also its precision do not decrease with measured-frequency s becoming lower. In order to measure any signal,it put a reshaping circuit at the front-end.Keyword: VHDL FPGA Iso-pr
3、ecision Wave reshaping Serial BCD division目录第一章 总体设计.3第二章 单元电路设计.5第三章 软件设计.5第四章 系统测试.6第五章 结论及参考文献.6第六章 附录.6一.总体设计基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。.总体方案比较:方案一:采用数字逻辑电路制作,用IC拼凑焊接实现。其特点是直接用现成的IC组合而成,简单方便,但由于使用的器件较多,连线复杂,体积大,功耗大,焊点和线路较多将使成品稳定度与精确度大打折扣。方案
4、二:采用可编程逻辑器件(CPLD)制作,利用EDA软件编程,下载烧制实现。将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,每个设计人员可以充分利用软件代码,提高开发效率,缩短研发周期,降低研发成本。易于进行功能扩展,可以利用频率计的核心技术,改造成其它产品。实现方法灵活,调试方便,修改容易。比较以上两种方案,易见采用后者更优。.测频方案比较:方案一:完全按定义式进行测量。被测信号x经放大整形形成时标X,晶振经分频形成时基TR。用时基TR开闸门,累计时标X的个数,则有公式可得x=1/X=N/TR。此方案为传统的测频方案,其测量精度将随被测信号频率的下
5、降而降低。方案二:对被信号的周期进行测量,再利用(频率周期)可得频率。测周期时,晶振R经分频形成时标X,被测信号经放在整形形成时基T控制闸门。闸门输出的计数脉冲XTR,则TX=NX。但当被测信号的周期较短时,会使精度大大下降。方案三:等精度测频,按定义式进行测量,但闸门时间随被测信号的频率变化而变化。如图所示,被测信号x经放大整形形成时标X,将时标X经编程处理后形成时基TR。用时基TR开闸门,累计时标X的个数,则有公式可得x=1/X=N/TR。此方案闸门时间随被测信号的频率变化而变化,其测量精度将不会随着被测信号频率的下降而降低。综上所述,选用第三种等精度测频方案。FX放大整形闸 门计数显示微
6、处理器闸门时间计算 图1 测频方案方框图测频方案中用到了定义式:,即要用到除法运算。利用FPGA实现二进制除法运算,一种方法是采用逼近法,这种方法速度低、准确性不高。另一种方法是采取被除数与除数的倒数相乘的方法,即将除数作为寄存器的地址,其倒数的小数部分作为寄存器的内容,通过一次寄存器寻址来计算除数的倒数。这种方法在一个时钟周期内即可完成一个完整的除法运算,虽然速度较高,但对于多字节除法运算,不仅程序复杂,而且占用资源较多。根据频率计的实际情况,本设计采用串行除法运算,利用多个时钟周期完成一个完整的除法运算,从而兼顾了频率计对速度和资源两方面的要求。.多位串行BCD码减法原理:在数字串行除法运
7、算中,减法运算是必不可少的部分。数字串行BCD码的减法运算是将P位的BCD码分为P个宽为4的二进制数,然后从低位开始相减,在P个时钟周期内完成减法操作。如果输入的操作数位数为8,那么串行BCD码减法器可以在8个时钟周期内完成8位BCD码减法运算。数字串行减法的控制也比较简单,1位BCD码减法运算完成,进行移位操作,并且移位次数加1,然后通过采用start信号指示新计算周期。当移位次数为n时,输出移位寄存器完成串并转换,输出结果。设计者可以根据实际情况,通过选择不同的n,提高设计的灵活性。本设计选择n=8。该设计在提高速度的同时,节省了资源。实验证明,采用1OOMHz的工作频率,实现一个8位BC
8、D码串行减法运算,耗用的资源却小于实现2位BCD码并行减法运算所耗用的资源。.多位串行BCD码除法原理:本设计采用循环式除法运算,循环原理可以用下面的公式表示:j+1=rj-dqj+1式中,j为第j步的余数,0为被除数;d为除数;qj+1为第j+1步所得的商;r为与移位步长有关的常数,在此取为16。除法运算循环图表如图2所示。RjRjQj+1dQj+1寄存器寄存器j+1 图2 串行BCD码除法运算算循环图循环步骤如下:将j左移四位,构成rj。通过多次BCD码减法运算,求得部分商qJ+1,得到部分余数。部分余数、部分商移位,准备下次循环。高速串行BCD码除法是建立在BCD码减法运算基础上的循环运
9、算。用被除数减除数得到部分余数的BCD码,如果够减,则使商加1;否则,余数和商同时左移四位,并记录移位的次数m,根据对有效位数的不同要求,可以对m进行赋值,如果要求保留8位有效数字,则m=8。在这种循环除法运算中,减少循环的次数是提高运算速度比较有效的方法。在一般循环式除法运算中,是从低位开始进行循环相减,循环次数等于商。如果是8位除法运行,则得到一个8位的商,要进行8位次的BCD码减法循环,例如:568952308=71119038,要进行71119038次循环,计算的速度可想而知。在本设计中借鉴了一般十进制除法的运算方法,从高位开始相减,大大减少了循环次数。下面以一个例子说明它的原理:将被
10、除数和除数移位,使其第一位BCD码不为0000,并记录移位的次数P(例如:5689523080000000,p=8)。比较最高位的大小,如果除数的最高位大于被除数的最高位,则将除数右移4位,同时将P减1(即:5689523008000000,且p=7)。得到的数卢为小数点的位置(F:7说明小数点的位置在第七位数后)。循环相减。当部分余数小于08000000,再将部分余数左移四位,继续进行相减。循环m次后即可得到m个有效数字的结果,然后根据p可以确定小数点的位置。使用这种方法计算一个8位数的除法运算,循环减法次数最大为80次,每次循环使用时间为8个时钟周期。如果工作频率为100MHz,则最长的运
11、算时间为64s,运算速度大大提高。二.单元电路设计2.1.整形电路: 图 3 输入信号整形电路图三.软件设计 3.1.程序流程图:频率测量程序流程图如图所示。开始系统初始化计 算测 频LCD显示 图 4 频率测量程序流程图四.系统测试4.1.使用仪器: 直流稳压电源: DC POWER SUPPLY DF1731SL2A,Zhong Ce Electronics CO., LTD; 数字万用表:UT101 MULTIMETER 金创电子仪器厂;FPGA实验仪:DP-FPGA, 广州致远电子有限公司;4.2.测试数据:被 测 次 数12345678被测频率(Hz)测得频率(Hz)测量误差()五.
12、结论及参考文献5.1.参考文献:1.潘松,黄计业.EDA 技术实用教程m.北京:科学出版社.2002。2.黄智伟主编,王彦,陈文光,朱卫华编著.全国大学生电子设计竞赛训练教程M.北京:电 子工业出版社 2005.3.南华大学第六届全国电子设计竞赛全体参赛成员 .第六届电子大赛资料C(多谢老师提供).4.王松武,蒋志坚.通用仪器【M】.哈尔滨:哈尔滨工程大学出版社.2002。.北京:电子工业出版社.2002。六.附件6.1.元件清单:DesignatorPart TypeQuantityFootprint电阻3.3k1axial0.4电阻10k2axial0.4电阻100k4axial0.4电容
13、瓷片电容2rad0.1插针2针2sip2插针3针1sip3插针20针1idc20芯片DAC08321DIP20电容电解电容1rb.2/.4液晶2x16字符型1led-a集成运放LM3241DIP14电阻RES22axial0.46.2.程序清单:-/* DJDPLJ_TOPVHD*/-顶层模块library IEEE;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;ent
14、ity djdplj_top is Port (rst,clk:in std_logic; dc,das:in std_logic; rs,wr,e:out std_logic; lcd_data:inout std_logic_vector(7 downto 0);end djdplj_top;architecture Behavioral of djdplj_top iscomponent cepin is Port (bz:in std_logic; dc:in std_logic; rst,cl:in std_logic; bzclk,dcclk:out std_logic_vecto
15、r(31 downto 0);end component cepin;component div is Port (clk,rst:in std_logic; bei,chu:in std_logic_vector(31 downto 0); shang:out std_logic_vector(31 downto 0); dian:out integer range -10 to 10 );end component div;component lcd is Port (clk,rst:in std_logic; rs,wr,e:out std_logic; data:inout std_l
16、ogic_vector(7 downto 0); pl:in std_logic_vector(31 downto 0); d:in integer range -10 to 10);end component lcd;component reset is Port (clk,rst:in std_logic; cl,clr:out std_logic );end component reset;signal rst1,cl1,clr1,clkk:std_logic;signal bzclk1,dcclk1,shang1:std_logic_vector(31 downto 0);signal
17、 dian1:integer range -10 to 10;signal dc1:std_logic;beginu1:cepin port map(bz=>clkk,dc=>dc1,rst=>clr1,cl=>cl1,bzclk=>bzclk1,dcclk=>dcclk1);u2:div port map(clk=>clk,rst=>rst1,bei=>dcclk1,chu=>bzclk1,shang=>shang1,dian=>dian1);u3:lcd port map(clk=>clk,rst=>rst
18、1,rs=>rs,wr=>wr,e=>e,data=>lcd_data,pl=>shang1,d=>dian1);u4:reset port map(clk=>clk,rst=>rst1,cl=>cl1,clr=>clr1);process(clk,rst)variable cnt:integer range 0 to 15;beginif rst='0' thencnt:=0;clkk<='0'elsif rising_edge(clk) thenif cnt=15 thencnt:=0;clk
19、k<=not clkk;elsecnt:=cnt+1;end if;end if;end process;process(clk,rst)variable cnt:integer range 0 to 3200000;beginif rst='0' thencnt:=0;elsif rising_edge(clk) thenif cnt<=10000 thencnt:=cnt+1;rst1<='1'elsif cnt<=20000 thencnt:=cnt+1;rst1<='0'elsecnt:=30000;rst1
20、<=rst;end if;end if;end process;process(das,dc)beginif das='0' thendc1<=dc;end if;end process;end Behavioral;-/* RESETVHD*/-复位模块library IEEE;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;entity r
21、eset is Port (clk,rst:in std_logic; cl,clr:out std_logic );end reset;architecture Behavioral of reset isbeginprocess(clk,rst)variable cnt:integer range 0 to 32000000;beginif rst='0' then cnt:=0;clr<='1'cl<='0'elsif rising_edge(clk) thencnt:=cnt+1;if cnt=1000000 then -cn
22、t=1000000clr<='1'elsif cnt=2000000 then -cnt=2000000clr<='0'elsif cnt=3000000 then -cnt=3000000cl<='1'elsif cnt=19000000 then -cnt=19000000cl<='0'elsif cnt=20000000 then -cnt=20000000cnt:=0;end if;end if;end process;end Behavioral;-/*DIVVHD*/-串行BCD码除法模块lib
23、rary IEEE;entity div is Port (clk,rst:in std_logic; bei,chu:in std_logic_vector(31 downto 0); shang:out std_logic_vector(31 downto 0); dian:out integer range -10 to 10 );end div;architecture Behavioral of div istype ss is array (1 to 8) of std_logic_vector(3 downto 0);signal s:ss;signal a,b:std_logi
24、c_vector(31 downto 0);signal n:integer range -10 to 10;signal c:integer range 0 to 8;signal k:integer range 1 to 7;signal d:integer range 0 to 1;beginprocess(clk,k,n,c,s,bei,chu,a,b,rst)variable cnt:integer range 0 to 31;variable m:std_logic_vector(3 downto 0);beginif rst='0' thenk<=5;n&l
25、t;=7;c<=8;cnt:=0;m:="0000"s<=("0000"),("0000"),("0000"),("0000"),("0000"),("0000"),("0000"),("0000");shang<=(others=>'0');elsif rising_edge(clk) thencase k iswhen 1=>if b(31 downto 28)=0
26、then b<=b(27 downto 0)&"0000"if n<10 thenn<=n+1;elsek<=5;n<=7;end if;elsek<=2;end if;when 2=>if a<b then b<="0000"&b(31 downto 4);n<=n-1;elseif n=0 thenk<=5;n<=7;elsek<=3;end if;end if;when 3=>if a(cnt+3 downto cnt)>=b(cnt+3 do
27、wnto cnt)+d then a(cnt+3 downto cnt)<=a(cnt+3 downto cnt)-b(cnt+3 downto cnt)-d;d<=0;elsea(cnt+3 downto cnt)<=a(cnt+3 downto cnt)+10-b(cnt+03 downto cnt)-d;d<=1;end if;if cnt<28 thencnt:=cnt+4;k<=3;elsek<=4;end if;when 4=> m:=m+1;cnt:=0;d<=0;if a<=b then s(c)<=m;m:=&
28、quot;0000"if c=1 then k<=5;elsek<=7;c<=c-1;if a(31 downto 28)=0 thena<=a(27 downto 0)&"0000"elseb<="0000"&b(31 downto 4);end if;end if;elsek<=3;end if;when 7=>if a>=b thenk<=3;elsea<=a(27 downto 0)&"0000"s(c)<=m;if c>
29、=2 thenc<=c-1;elsek<=5;end if;end if;when 5=>a<=bei; b<=chu; shang<=s(8)&s(7)&s(6)&s(5)&s(4)&s(3)&s(2)&s(1); k<=6; dian<=n; n<=7; m:="0000" c<=8; cnt:=0;when 6=>if a(31 downto 28)=0 thena<=a(27 downto 0)&"0000"if
30、 n>=0 then n<=n-1;elsen<=7;k<=5;end if;elsek<=1;end if;when others=>k<=5;end case;end if;end process;end Behavioral;-/*CEPINVHD*/-测频模块library IEEE;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UN
31、ISIM;entity cepin is Port (bz:in std_logic; dc:in std_logic; rst,cl:in std_logic; bzclk,dcclk:out std_logic_vector(31 downto 0);end cepin;architecture Behavioral of cepin issignal ena:std_logic;signal bzclk1,dcclk1,bzq,dcq:std_logic_vector(31 downto 0);beginprocess(rst,bzclk1,dcclk1)beginif rst'
32、event and rst='1' thenbzclk<=bzclk1;dcclk<=dcclk1;end if;end process;process(ena,bz,bzq,dcq)beginif bz'event and bz='1' thenif ena='0' thenbzclk1<=bzq;dcclk1<=dcq;end if;end if;end process;bz1:process(bz,rst,ena)beginif rst='1' then bzq<=(others=>
33、;'0');elsif rising_edge(bz) then if ena='1' then if bzq(3 downto 0)<9 then bzq(3 downto 0)<=bzq(3 downto 0)+1;elsebzq(3 downto 0)<="0000"if bzq(7 downto 4)<9 then bzq(7 downto 4)<=bzq(7 downto 4)+1;elsebzq(7 downto 4)<="0000"if bzq(11 downto 8)&l
34、t;9 then bzq(11 downto 8)<=bzq(11 downto 8)+1;elsebzq(11 downto 8)<="0000"if bzq(15 downto 12)<9 thenbzq(15 downto 12)<=bzq(15 downto 12)+1;elsebzq(15 downto 12)<="0000"if bzq(19 downto 16)<9 thenbzq(19 downto 16)<=bzq(19 downto 16)+1;elsebzq(19 downto 16)<
35、;="0000"if bzq(23 downto 20)<9 thenbzq(23 downto 20)<=bzq(23 downto 20)+1;elsebzq(23 downto 20)<="0000"if bzq(27 downto 24)<9 thenbzq(27 downto 24)<=bzq(27 downto 24)+1;elsebzq(27 downto 24)<="0000"if bzq(31 downto 28)<9 thenbzq(31 downto 28)<=bz
36、q(31 downto 28)+1;elsebzq(31 downto 28)<="0000"end if;end if;end if;end if;end if;end if;end if;end if;end if;end if;end process bz1;dc1:process(dc,rst,ena)beginif rst='1' then dcq<=(others=>'0');elsif rising_edge(dc) thenif ena='1' thenif dcq(3 downto 0)&l
37、t;9 then dcq(3 downto 0)<=dcq(3 downto 0)+1;elsedcq(3 downto 0)<="0000"if dcq(7 downto 4)<9 then dcq(7 downto 4)<=dcq(7 downto 4)+1;elsedcq(7 downto 4)<="0000"if dcq(11 downto 8)<9 then dcq(11 downto 8)<=dcq(11 downto 8)+1;elsedcq(11 downto 8)<="0000&
38、quot;if dcq(15 downto 12)<9 thendcq(15 downto 12)<=dcq(15 downto 12)+1;elsedcq(15 downto 12)<="0000"if dcq(19 downto 16)<9 thendcq(19 downto 16)<=dcq(19 downto 16)+1;elsedcq(19 downto 16)<="0000"if dcq(23 downto 20)<9 thendcq(23 downto 20)<=dcq(23 downto 2
39、0)+1;elsedcq(23 downto 20)<="0000"if dcq(27 downto 24)<9 thendcq(27 downto 24)<=dcq(27 downto 24)+1;elsedcq(27 downto 24)<="0000"if dcq(31 downto 28)<9 thendcq(31 downto 28)<=dcq(31 downto 28)+1;elsedcq(31 downto 28)<="0000"end if;end if;end if;end
40、if;end if;end if;end if;end if; end if;end if;end process dc1;process(dc,rst,cl)beginif rst='1' thenena<='0'elsif rising_edge(dc) then ena<=cl;end if;end process;end Behavioral;-/*JISUANVHD*/-计算转换模块library IEEE;- Uncomment the following lines to use the declarations that are- p
41、rovided for instantiating Xilinx primitive components.-library UNISIM;entity jisuan is Port (clk,rst:in std_logic; bzclk,dcclk:in std_logic_vector(31 downto 0); data:out std_logic_vector(31 downto 0); dian:out integer range -10 to 10 );end jisuan;architecture Behavioral of jisuan iscomponent div is
42、Port (clk,rst:in std_logic; bei,chu:in std_logic_vector(31 downto 0); shang:out std_logic_vector(31 downto 0); dian:out integer range -10 to 10 );end component div;signal bei:std_logic_vector(31 downto 0);signal chu,shang:std_logic_vector(31 downto 0);beginchu<=bzclk;bei<=dcclk;u1:div port map
43、 (clk=>clk,rst=>rst,bei=>bei,chu=>chu,shang=>shang,dian=>dian);end Behavioral;-/*LCDVHD*/-LCD驱动模块library IEEE;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;entity lcd is-generic (N:integer:=3
44、2000;-delay:integer:=20); Port (clk,rst:in std_logic; rs,wr,e:out std_logic; data:inout std_logic_vector(7 downto 0); pl:in std_logic_vector(31 downto 0); d:in integer range -10 to 10);end lcd;architecture Behavioral of lcd istype state is (set_dlnf,clear_lcd,set_cursor,set_dcb,set_location,write_da
45、ta,set_location1,write_data1,set_location4,write_data4,set_location5,write_data5,set_location6,write_data6,set_location7,write_data7);signal current_state:state;type rom is array(0 to 15) of std_logic_vector(7 downto 0);type rom1 is array(0 to 11) of std_logic_vector(7 downto 0);type rom2 is array(0
46、 to 2) of std_logic_vector(7 downto 0);constant datarom:rom:=("00100000"),("00101010"),("00101010"),("01000011"),("01111001"),("01101101"),("01101111"),("01101101"),("01100101"),("01110100"),("01
47、100101"),("01110010"),("00101010"),("00101010"),("00100000"),("00100000");constant datarom1:rom1:=("00110000"),("00110001"),("00110010"),("00110011"),("00110100"),("00110101"),("00
48、110110"),("00110111"),("00111000"),("00111001"),("00101110"),("00100000");-0123456789.空格 点:10100101constant datarom2:rom2:=("00100000"),("01001000"),("01111010");signal clkk:std_logic;signal dd:integer range 0 to 10
49、;constant N:integer :=3200;-3200constant delay:integer :=20;-20signal zz,zz1:integer range 0 to 2;signal i:integer range 0 to 9;signal cnt3:integer range 0 to 7;beginprocess(cnt3)begincase cnt3 iswhen 0=>i<=conv_integer(pl(31 downto 28);when 1=>i<=conv_integer(pl(27 downto 24);when 2=>
50、;i<=conv_integer(pl(23 downto 20);when 3=>i<=conv_integer(pl(19 downto 16);when 4=>i<=conv_integer(pl(15 downto 12);when 5=>i<=conv_integer(pl(11 downto 8);when 6=>i<=conv_integer(pl(7 downto 4);when 7=>i<=conv_integer(pl(3 downto 0);end case;end process;process(d,pl
51、)beginif d<=-1 thendd<=2;zz<=2;elsif d<=0 thendd<=2;zz<=1;elsif d<=10 then if pl/=0 thendd<=d+1;zz<=0;elsedd<=2;zz<=1;end if;elsedd<=0;zz<=0;end if;end process;process(rst,clk)variable cnt:integer;beginif rst='0' then cnt:=0;clkk<='0'elsif ri
52、sing_edge(clk) then cnt:=cnt+1;if cnt<N then clkk<='0'else clkk<='1'end if;if cnt>=2*N then cnt:=0;end if;end if;end process;process(rst,clkk,current_state)variable cntt,cnt2:integer;beginif rst='0' then current_state<=set_dlnf;cntt:=0;cnt2:=0;cnt3<=0;elsif
53、rising_edge(clkk) then case current_state iswhen set_dlnf=>rs<='0'wr<='0'e<='0'data<="00111000"cntt:=cntt+1;if cntt>delay and cntt<=delay*2 thene<='1'else e<='0'end if;if cntt>=3*delay then current_state<=clear_lcd;cntt:=0;end if;when clear_lcd=>rs<='0'wr<='0'e<='0'data<="00000001&q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惠州布袋风管施工方案
- 武汉学校智能地暖施工方案
- 隧洞竖井管棚施工方案
- 云浮无尘车间净化施工方案
- 卫生间防水上墙施工方案
- 2012年7月国家开放大学汉语言文学本科《中国现代文学专题》期末纸质考试试题及答案
- 提升农业生产技术的创新与应用实施方案
- 绿色就业与劳动市场转型策略
- 加强污染防治和生态建设未来展望与持续改进措施
- 加强跨部门协作与整合资源的策略及实施路径
- 2025年徐州生物工程职业技术学院单招职业技能测试题库含答案
- 2025年湖南铁道职业技术学院单招职业技能测试题库新版
- 新媒体运营课件
- 《鼹鼠的月亮河》考试题附答案
- 2025年内蒙古巴彦淖尔市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 2025年新人教版物理八年级下册全册教案
- 微量注射泵培训
- 2025年人教版新教材英语小学三年级下册教学计划(含进度表)
- 形象设计师三级习题库及答案
- 2025年度能源行业员工聘用合同范本
- 户外广告安装安全施工方案
评论
0/150
提交评论