真空镀膜机控制系统的设计_第1页
真空镀膜机控制系统的设计_第2页
真空镀膜机控制系统的设计_第3页
真空镀膜机控制系统的设计_第4页
真空镀膜机控制系统的设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、真空镀膜机控制系统的设计太阳能真空集热管磁控溅射镀膜机主要用于太阳能真空集热管产生中镀制渐变的精确的化学配比氮化铝膜,在设定工艺自动运行的过程中,参数的设定主要包括对镀膜时间、氮气的流量、氩气的流量、靶电流以及靶模式选择的设定,如下表所示。参数设定是在自动控制复位的状态下根据工艺的要求由操作人员来完成的,设定后存储在存储器中以等待工艺运行时调用。表1 工艺参数设定层数时间/s氩气(流量)氮气(流量)靶电流/A选靶模式第一层56052401-启动靶1第二层152041453启动靶3第三层302585557-启动靶1、2、3第四层113737345-启动靶1、3第五层651518476-启动靶2、

2、3采用手动控制和自动控制相结合的设计思路,设计采用FPGA为核心控制芯片,基于VHDL语言,这个自动控制系统的设计分成工序流程控制模块、参数设置及调用模块和通信模块三个模块。其中工序流程模块采用有限状态机设计,完成工序流程的控制;参数设置及调用模块主要完成系统所需的参数的设置,需要设置的参数包括镀膜的时间,氮气流量,氩气流量、靶电流大小以及对靶的模式,参数设置及调用模块主要为SRAM的设计;通信模块设计了UART接口,便于与计算机或其他设备之间进行通信。系统的设计原理框图如下:图1:系统原理框图3.1工序控制流程模块:用状态机来设计,状态机是数字设计的重要组成部分,是实现高效率,高可靠逻辑控制

3、的重要途径。此模块采用MOORE状态机来描述,其状态机的状态转移图如下图所示,其中包好了17个状态,即包含了整个工序控制的流程,没有标明条件的是一种“无条件”转换。图2:工序自动运行的状态转移图1.自动控制模块的功能仿真及分析 如图3所示,在复位信号reset变为高电平(reset=1)后,开自动运行(atom_hand=1),接着自动运行工序;开机械泵(machinpump=1),开预抽阀(beforeluntvalve=1),判断真空度1(vacuity=1时);关预抽阀(beforeluntvalve=0),开前级阀(prevalve=1),开高阀(highvalve=1),关维持阀(n

4、aintainvalve=0),关维持泵(maintainpump=0),判断真空度2(vacuity2=1时);关光闸阀(lightbarriervalve=1),开截止阀(cutvalve=1),判断真空度3(vacuity3=1时);开氮气控制(nitrogenontrol=1)和氩气控制(argoncontrol=1),开工件旋转(workpiecerun=1),开靶运行(buttrun=1),加靶电流(buttcurrent1、2、3),自动运行(crafrun=1);运行完毕后,开充气阀(aeratevalve=1),开门信号(onoffdoor=1),取工件,进行下一个工序;图3

5、: 自动控制系统模块的功能仿真(1)图3: 自动控制系统模块的功能仿真zoom out(2) 由于此程序较长,具体的程序设计见附录。3.2 参数设置及调用模块 参数设定是在镀膜机工艺运行以前完成的,参数的调用时在工序流程模块中的第十个状态(state10)完成的,如下图4所示的设计原理框图,它由操作者根据镀膜工艺的要求事先设定,再通过设置数据,包括镀膜的时间、氩气流量、氮气流量、靶电流大小、靶的选取模式,在运行时调用这些参数进行工艺设计。参数的输入采用两位十进制数(8位二进制)的方法,通过存储器把镀膜的时间,氩气流量、氮气流量、靶电流的大小等分别存储在RAM1,RAM2,RAM3,RAM4,R

6、AM5中,以备设备运行时调用。在设置参数时,用一个控制器con2完成了对参数的选择,即对存储器的选择。在镀膜机的工艺自动运行中,因每一层镀膜工艺的不同,其设定及运行的参数也是不一样的,控制器con1用于对层数的控制,层数的控制包括参数的设置时的控制以及工艺自动运行时的控制,参数设置时的层数是一个内部的信号输入量,它完成了本层的镀膜后自动调用下一层设置的参数进行运行,在本设计的程序描述中是由一个十进制递减计数器sconter发出的。con3是对选取靶模式的控制,在镀膜时,有一个靶电压的输入,该系统的要求是设定3个输入的靶电压1,靶2,靶3,根据不同的镀膜工艺选取一个或者几个靶同时工作,在镀膜完成

7、后,con3发出一个结束镀膜工艺的完成信号,当然还有一个对运行时间计数的十进制递减计数器sconter,它是一个可预置的计数器,它还要完成本层镀膜时间完成后层数的递增,并返回给con1来完成对层数的控制,为了对设定和运行的数据进行观察,采用了译码器decoder用数码管来显示数据,它是一个由7段数码管构成的译码器,分别对设置及运行参数的个位和十位进行译码。1.顶层文件的设计1)参数设置及调用模块的顶层映射的原理图如下:(在quartus中用RTL viewer观察):图5 top顶层映射的原理图2)顶层的VHDL硬件描述beginu1: con2 port map(a=>fin,b=&g

8、t;fout1,c=>ca,s=>wrt); -con2的映射u2: con1 port map(x=>cssz,y(0)=>cs1,y(1)=>cs2,y(2)=>cs3,y(3)=>cs4, y(4)=>cs5); -con1的映射u3: sram1 port map(cs=>cs1,wr=>wrt,adr=>ca,din=>dint, dout=>douts1,clk=>clkj); -sram1(时间)的映射u4: sram1 port map(cs=>cs2,wr=>wrt,adr=>

9、;ca,din=>dint, dout=>doutb,clk=>clkj); -sram1(氩气)的映射u5: sram1 port map(cs=>cs3,wr=>wrt,adr=>ca,din=>dint, dout=>doutc,clk=>clkj); -sram1(氮气)的映射u6: sram1 port map(cs=>cs4,wr=>wrt,adr=>ca,din=>dint, dout=>doutd,clk=>clkj); -sram1(靶电流)的映射u7: sram1 port map(c

10、s=>cs5,wr=>wrt,adr=>ca,din=>dint, dout=>douts2,clk=>clkj); -sram1(靶数)的映射u8: sconter port map(dd=>douts1,clk=>clk1,f=>fout1, f0=>fout,en=>wrt,qq=>douta); -sconter(递减计数器)的映射u9: con3 port map(m=>douts2,n=>yt,over=>ov); -con3的映射 u10: pulse port map(en=>wrt

11、,clock=>clkj,clk=>clk1); -pulse的映射u11: decoder port map(seg(3)=>douta(7),seg(2)=>douta(6), seg(1)=>douta(5),seg(0)=>douta(4), q3=>douta1); -decoder的映射u12: decoder port map(seg(3)=>douta(3),seg(2)=>douta(2), seg(1)=>douta(1),seg(0)=>douta(0), q3=>douta2); -decoder的

12、映射u13: decoder port map(seg(3)=>doutb(7),seg(2)=>doutb(6), seg(1)=>doutb(5),seg(0)=>doutb(4), q3=>doutb1); -decoder的映射u14: decoder port map(seg(3)=>doutb(3),seg(2)=>doutb(2), seg(1)=>doutb(1),seg(0)=>doutb(0), q3=>doutb2); -decoder的映射u15: decoder port map(seg(3)=>dou

13、tc(7),seg(2)=>doutc(6), seg(1)=>doutc(5),seg(0)=>doutc(4), q3=>doutc1); -decoder的映射u17: decoder port map(seg(3)=>doutd(7),seg(2)=>doutd(6), seg(1)=>doutd(5),seg(0)=>doutd(4), q3=>doutd1); -decoder的映射u18: decoder port map(seg(3)=>doutd(3),seg(2)=>doutd(2), seg(1)=>

14、doutd(1),seg(0)=>doutd(0), q3=>doutd2); -decoder的映射end struct;3)参数设置及调用模块的功能仿真:2.分频器的设计 pulse分频器的是一个32Mhz的分频器,这里是基于50Mhz的电源时钟频率,要用来作为1Hz的秒脉冲时钟,其分频系数为32×106。1)VHDL描述counter:process(clock,en)variable count2:integer;variable clk0:std_logic;begin if en='0' then count2:=0;clk0:='0&

15、#39;elsif clock'event and clock='1' then count2:=count2+1;if count2=32000000 then clk0:='1'elsif count2=64000000 then count2:=0;clk0:='0'end if;end if;clk<=clk0;end process;2)功能仿真波形为了方便观察,波形中将分频系数改为6分频,仿真波形如下所示:图6 分频器的仿真3.CON1的设计con1程序完成的是对SRAM的选则功能,设计中SRAM的片选信号为采用低电平有

16、效,对应5个SRAM,分别存储设定的运行时间,氩气量,氮气量,靶电流和选靶模式。1)con1的VHDL描述entity con1 is port(x:in std_logic_vector(3 downto 0); y:out std_logic_vector(4 downto 0);end con1;architecture bhv of con1 is begin with x select y<="11110" when "0001", "11101" when "0010", "11011&

17、quot; when "0011", "10111" when "0100", "01111" when "0101", "11111" when others;end bhv;2)功能仿真 如图所示,当x=0001时,y=11110,说明sram1被选中;同理,当x=0010时,y=11101,sram2被选中;图7 con1的功能仿真4.CON2的设计 con2完成的是对工艺运行层数的控制,其中包括镀膜自动运行层数(“b”)和设置参数层数(“a”)的控制,“s”是对“a”

18、和“b”的选择,当s=“0”时,选择的是设置参数层数(“a”),当s=”1”时,选择镀膜自动运行层数(“b”);“s”是由控制运行时间的SRAM和decoder所确定的。1)con2的VHDL描述entity con2 is port(a,b:in std_logic_vector(3 downto 0); s:in std_logic; c:out std_logic_vector(3 downto 0);end con2;architecture bhv of con2 is begin process(s,a,b) begin if s='0' then c<=a;

19、 else c<=b; end if; end process;end bhv;2)con2的功能仿真 如图所示,当s=0时,输出为c=a;当s=1时,输出为c=b;图8 con2的功能仿真5.CON3的设计con3用于对靶的控制,其功能表如下表2所示,over发出工艺运行完毕的信号,m是SRAM发出的设定参数。M(SRAM)靶1靶2靶3Over000000100100000001001100000001100110000001111110000000000000000000011000000000110010000001011010000010000001其它0000表2 选靶的对应模

20、式表1)con3的VHDL描述architecture bhv of con3 is begin process(m) begin case m is when "00000000"=>n<="000"over<='0' when "00000001"=>n<="001"over<='0' when "00000010"=>n<="010"over<='0' when &qu

21、ot;00000011"=>n<="100"over<='0' when "00000100"=>n<="011"over<='0' when "00000101"=>n<="101"over<='0' when "00000110"=>n<="110"over<='0' when "00000111&

22、quot;=>n<="111"over<='0' when "00001000"=>n<="000"over<='1' when others=>n<="000"end case ; end process;2)con3的功能仿真图9:con3的功能仿真6.SRAM1的设计 sram1是一个静态存储器,它完成数据的读写功能,作为一个内部的数据存储器,起到了数据调用暂存的功能,以提高处理器处理数据的速度。1)sram1的VHDL描述arc

23、hitecture bhv of sram1 is subtype word is std_logic_vector(7 downto 0); -数组的定义type memory is array(0 to 15) of word; signal sram: memory:=(others=>(others=>'0'); signal adr_in:integer range 0 to 15;begin adr_in<=conv_integer(adr); -二进制转换为十进制的地址 writ:process(wr,cs,adr_in,din,sram,clk

24、) -写入sram begin if clk'event and clk='1' then if cs='0' and wr='0' then sram(adr_in)<=din; end if; end if; end process; red:process(adr_in,wr,sram,clk) -读出sram begin if clk'event and clk='1' then if (wr='1') then dout<=sram(adr_in); else dout<

25、=(others=>'Z'); end if; end if; end process;end bhv;2)功能仿真wr是一个读写控制信号,当wr=0时,是写过程,把数据写入到地址线所表示的地址中;当wr=1时,是读的过程,将地址线代表的地址中的数据读出。图10 sram1的功能仿真7.SCONTER的设计sconter是一个可配置的十进制递减计数器,它完成的是每一层镀膜时间的计数,此参数是在运行前设定的,当镀层镀的时间计数到零时,它输出的层数自动加1跳到下一层运行。1)VHDL硬件描述architecture bhv of sconter is begin proces

26、s(en,clk) variable scnt:std_logic_vector(7 downto 0); variable sc,sc1:std_logic_vector(3 downto 0); begin if en='0' then scnt:="00000000" sc:="0000"sc1:=sc-1;f<=sc; elsif (clk'event and clk='1') then if scnt="00000000" then scnt:=dd;sc1:=sc1+1;f&l

27、t;=sc1;f0<=sc1;qq<=scnt;elsif scnt="00010000" then scnt:="00001001" qq<=scnt; -输出到译码显示器 elsif scnt="00100000" then scnt:="00011001" qq<=scnt; elsif scnt="00110000" then scnt:="00101001" qq<=scnt; elsif scnt="01000000&quo

28、t; then scnt:="00111001" qq<=scnt; elsif scnt="01010000" then scnt:="01001001" qq<=scnt; elsif scnt="01100000" then scnt:="01011001" qq<=scnt; elsif scnt="01110000" then scnt:="01101001" qq<=scnt; elsif scnt="1000

29、0000" then scnt:="01111001" qq<=scnt; elsif scnt="10010000" then scnt:="10001001" qq<=scnt; else scnt:=scnt-1; qq<=scnt;end if; end if; end process;2)功能仿真输入的是一个8位二进制数,而在译码器中是每4位译码作为十进制在数码管中显示的,把高四位称作“十位”,低4位作为“个位”,在BCD码的4位二进制编码中只用了10个,由图可以看出,从9递减到0后,输出家加1,

30、完成了所需功能图11 sconter的功能仿真8.DECODER的设计decoder是一个由7段数码管构成的译码器,如下表3给出了七段数码管译码器的真值表。表3 decoder的真值表1)VHDL的硬件描述architecture bhv of decoder is beginprocess(seg)begin case seg is when "0000" => q3<="0000001" -0when "0001" => q3<="1001111" -1when "0010&q

31、uot; => q3<="0010010" -2when "0011" => q3<="0000110" -3when "0100" => q3<="1001100" -4when "0101" => q3<="0100100" -5when "0110" => q3<="0100000" -6when "0111" => q3&l

32、t;="0001111" -7when "1000" => q3<="0000000" -8when "1001" => q3<="0000100" -9when others => q3<="1111111" -0end case;end process;end bhv;2)decoder的功能仿真如图所示,当seg=0010时,q3=0010010; 当seg=1101(others)时,q3=1111111;图12 decoder功能

33、仿真3.3 通信模块的设计异步收发器常用于短距离、低速、低成本的微机与下位机的通信,在此作为真空镀膜机的FPGA控制器与复合真空计之间的通信接口,下图为异步收发器的原理框图,分成三个字模块和一个总模块:波特率发生器、接收模块、发送模块、顶层映射模块。这里采用了4800b/s的波特率,采样时采用了波特周期的1/8时钟,接收的是6个8位数据,因此没开始接受6帧的数据作为并行输出;发送机发送的是8位的握手信号,其UART的数据帧格式如下: 由于串行数据帧和接收机时钟是异步的,因而把逻辑1转为逻辑0作为一个数据帧的起始位,为了避免毛刺现象得到正确的起始位,要求接收到的起始位在波特率时钟采样的过程中至少

34、有一半都属于逻辑0,才认为接收到的是起始位,所以起始位至少需要4个连续波特时钟BCLK周期的的逻辑0被接收,才认为起始位被接收到,接着数据位和奇偶校验位将被隔8个连续bclk周期被采样一次,即将在每个位的中点处被采样。1.UART顶层模块设计1)VHDL描述如下:architecture behavioral of uart iscomponent pulsetr port(clk:in std_logic; reset:in std_logic; bclk:out std_logic);end component;component t_uartrport(bclk,reset: in st

35、d_logic; ready:in std_logic; txd:out std_logic);end component;component R_UARTRport(reset,bclk: in std_logic; rxd:in std_logic; rout :out std_logic_vector(7 downto 0); ready,warning: out std_logic);end component;signal sign0,sign1:std_logic;begin u0: pulsetr port map(reset=>reset,clk=>clk,bclk

36、=>sign0);u1: t_uaRtr port map(reset=>reset,bclk=>sign0,ready=>sign1,txd=>zkout);u2: R_UARTR port map(reset=>reset,bclk=>sign0,rxd=>rtin,rout=>rtout,warning=>warning,ready=>sign1);rtclk<=sign0;end behavioral;2)顶层的RTL VIEWER3)顶层设计的功能仿真波形如下: 在reset=1时,接收机接收的数据以并行的故事输

37、出,及rtout=01010001,rtclk为波特时钟,该输出是为了仿真的方便和更加正确的分析仿真结果的精确性;2.分频器的设计1)分频器的VHDL描述process(clk,reset)variable count:integer ;variable rclk: std_logic;begin if reset='0' then count:=1;rclk:='0'elsif clk'event and clk='1' then if count=32/(bit1*n) then rclk:=not rclk;count:=count

38、+1;elsif count=32/(bit1*n*2) then rclk:=not rclk;count:=1;else count:=count+1;end if ;end if ;bclk<=rclk;end process;2)分频器的功能仿真3.接收机R_UART的设计接收机根据UART的数据格式,也包括1位起始位和8位数据位,1位停止位,在起始位到来之前,接收的数据都是1,处于高电平;当低电平到来时,表示起始位已经到来,然后开始发送数据位,当数据位接收完毕后,对下一位停止位进行检测,当检测到停止位1时,表示接受的数据正确,此帧的数据发送接收完成,准备下一帧数据的接收,流程图

39、和状态转移图如下图所示:1)接收机的VHDL描述:architecture bhv of R_UARTr IStype states is(pstart,rstart,rcenter,rwait,rsample,rstop);signal cstate:states;signal mclk,flag0: std_logic;begin p0:process(bclk,reset,rxd) variable rcntb,rcnt,rcntd:std_logic_vector(3 downto 0); variable warning0:std_logic; begin if reset='

40、;0' then -复位状态 cstate<=pstart; rcntb:="0000" rcnt:="0000" rcntd:="0000" warning0:='0' elsif bclk'event and bclk='1' then case cstate is when pstart=> cstate<=rstart; -预备开始状态when rstart=> -开始状态 if rxd='0' then cstate<=rcente

41、r; else cstate<=rstart;rcntb:="0000" end if;when rcenter=> -求中点状态 if rcntb=2 then cstate<=rwait;rcntb:="0000" else rcntb:=rcntb+1;cstate<=rstart; end if;when rwait=> -等待状态 if rcntb=6 then cstate<=rsample;rcntb:="0000" else rcntb:=rcntb+1;cstate<=rwa

42、it; end if; when rsample=> if flag0='1' then cstate<=rstop; else cstate<=rwait; end if;when rstop=> if rxd='0' then if rcnt<3 then cstate<=pstart;rcnt:=rcnt+1;else warning0:='1'end if;if mclk='1' then cstate<=pstart;end if;end if;warning<=warni

43、ng0;when others=>cstate<=pstart;end case ;end if;end process p0;process(bclk,reset,rxd)variable rrout:std_logic_vector(8 downto 0);variable bitc,count:integer range 0 to 8;variable rready,mclk0,flag1: std_logic;begin if reset='0' then bitc:=0;count:=0;rready:='0'mclk0:='0&#

44、39; flag1:='0' rrout:="000000000"elsif bclk'event and bclk='1' then case cstate is when pstart=> rready:='1'count:=0;bitc:=0;rrout:="000000000" rout<=rrout(7 downto 0);when rstart=>rready:='0' -开始状态when rcenter=>rready:='0' -求中点状态when rwait=>NULL; -等待状态when rsample=&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论