真空镀膜机控制系统的设计.docx
- 文档编号:26555137
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:27
- 大小:431.67KB
真空镀膜机控制系统的设计.docx
《真空镀膜机控制系统的设计.docx》由会员分享,可在线阅读,更多相关《真空镀膜机控制系统的设计.docx(27页珍藏版)》请在冰豆网上搜索。
真空镀膜机控制系统的设计
真空镀膜机控制系统的设计
一、设计功能与要求
太阳能真空集热管磁控溅射镀膜机主要用于太阳能真空集热管产生中镀制渐变的精确的化学配比氮化铝膜,在设定工艺自动运行的过程中,参数的设定主要包括对镀膜时间、氮气的流量、氩气的流量、靶电流以及靶模式选择的设定,如下表所示。
参数设定是在自动控制复位的状态下根据工艺的要求由操作人员来完成的,设定后存储在存储器中以等待工艺运行时调用。
表1工艺参数设定
层数
时间/s
氩气(流量)
氮气(流量)
靶电流/A
选靶模式
第一层
5
60
52
40
1---启动靶1
第二层
15
20
41
45
3—启动靶3
第三层
30
25
85
55
7---启动靶1、2、3
第四层
11
37
37
34
5---启动靶1、3
第五层
65
15
18
47
6---启动靶2、3
二、系统设计思路
采用手动控制和自动控制相结合的设计思路,设计采用FPGA为核心控制芯片,基于VHDL语言,这个自动控制系统的设计分成工序流程控制模块、参数设置及调用模块和通信模块三个模块。
其中工序流程模块采用有限状态机设计,完成工序流程的控制;参数设置及调用模块主要完成系统所需的参数的设置,需要设置的参数包括镀膜的时间,氮气流量,氩气流量、靶电流大小以及对靶的模式,参数设置及调用模块主要为SRAM的设计;通信模块设计了UART接口,便于与计算机或其他设备之间进行通信。
系统的设计原理框图如下:
图1:
系统原理框图
三、系统的实现
3.1工序控制流程模块:
用状态机来设计,状态机是数字设计的重要组成部分,是实现高效率,高可靠逻辑控制的重要途径。
此模块采用MOORE状态机来描述,其状态机的状态转移图如下图所示,其中包好了17个状态,即包含了整个工序控制的流程,没有标明条件的是一种“无条件”转换。
图2:
工序自动运行的状态转移图
1.自动控制模块的功能仿真及分析
如图3所示,在复位信号reset变为高电平(reset=’1’)后,开自动运行(atom_hand=’1’),接着自动运行工序;开机械泵(machinpump=’1’),开预抽阀(beforeluntvalve=’1’),判断真空度1(vacuity=’1’时);关预抽阀(beforeluntvalve=’0’),开前级阀(prevalve=’1’),开高阀(highvalve=’1’),关维持阀(naintainvalve=’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:
自动控制系统模块的功能仿真
(1)
图3:
自动控制系统模块的功能仿真zoomout
(2)
由于此程序较长,具体的程序设计见附录。
3.2参数设置及调用模块
参数设定是在镀膜机工艺运行以前完成的,参数的调用时在工序流程模块中的第十个状态(state10)完成的,如下图4所示的设计原理框图,它由操作者根据镀膜工艺的要求事先设定,再通过设置数据,包括镀膜的时间、氩气流量、氮气流量、靶电流大小、靶的选取模式,在运行时调用这些参数进行工艺设计。
参数的输入采用两位十进制数(8位二进制)的方法,通过存储器把镀膜的时间,氩气流量、氮气流量、靶电流的大小等分别存储在RAM1,RAM2,RAM3,RAM4,RAM5中,以备设备运行时调用。
在设置参数时,用一个控制器con2完成了对参数的选择,即对存储器的选择。
在镀膜机的工艺自动运行中,因每一层镀膜工艺的不同,其设定及运行的参数也是不一样的,控制器con1用于对层数的控制,层数的控制包括参数的设置时的控制以及工艺自动运行时的控制,参数设置时的层数是一个内部的信号输入量,它完成了本层的镀膜后自动调用下一层设置的参数进行运行,在本设计的程序描述中是由一个十进制递减计数器sconter发出的。
con3是对选取靶模式的控制,在镀膜时,有一个靶电压的输入,该系统的要求是设定3个输入的靶电压1,靶2,靶3,根据不同的镀膜工艺选取一个或者几个靶同时工作,在镀膜完成后,con3发出一个结束镀膜工艺的完成信号,当然还有一个对运行时间计数的十进制递减计数器sconter,它是一个可预置的计数器,它还要完成本层镀膜时间完成后层数的递增,并返回给con1来完成对层数的控制,为了对设定和运行的数据进行观察,采用了译码器decoder用数码管来显示数据,它是一个由7段数码管构成的译码器,分别对设置及运行参数的个位和十位进行译码。
1.顶层文件的设计
1)参数设置及调用模块的顶层映射的原理图如下:
(在quartus中用RTLviewer观察):
图5top顶层映射的原理图
2)顶层的VHDL硬件描述
begin
u1:
con2portmap(a=>fin,b=>fout1,c=>ca,s=>wrt);--con2的映射
u2:
con1portmap(x=>cssz,y(0)=>cs1,y
(1)=>cs2,y
(2)=>cs3,y(3)=>cs4,
y(4)=>cs5);--con1的映射
u3:
sram1portmap(cs=>cs1,wr=>wrt,adr=>ca,din=>dint,
dout=>douts1,clk=>clkj);--sram1(时间)的映射
u4:
sram1portmap(cs=>cs2,wr=>wrt,adr=>ca,din=>dint,
dout=>doutb,clk=>clkj);--sram1(氩气)的映射
u5:
sram1portmap(cs=>cs3,wr=>wrt,adr=>ca,din=>dint,
dout=>doutc,clk=>clkj);--sram1(氮气)的映射
u6:
sram1portmap(cs=>cs4,wr=>wrt,adr=>ca,din=>dint,
dout=>doutd,clk=>clkj);--sram1(靶电流)的映射
u7:
sram1portmap(cs=>cs5,wr=>wrt,adr=>ca,din=>dint,
dout=>douts2,clk=>clkj);--sram1(靶数)的映射
u8:
sconterportmap(dd=>douts1,clk=>clk1,f=>fout1,
f0=>fout,en=>wrt,qq=>douta);--sconter(递减计数器)的映射
u9:
con3portmap(m=>douts2,n=>yt,over=>ov);--con3的映射
u10:
pulseportmap(en=>wrt,clock=>clkj,clk=>clk1);--pulse的映射
u11:
decoderportmap(seg(3)=>douta(7),seg
(2)=>douta(6),
seg
(1)=>douta(5),seg(0)=>douta(4),
q3=>douta1);--decoder的映射
u12:
decoderportmap(seg(3)=>douta(3),seg
(2)=>douta
(2),
seg
(1)=>douta
(1),seg(0)=>douta(0),
q3=>douta2);--decoder的映射
u13:
decoderportmap(seg(3)=>doutb(7),seg
(2)=>doutb(6),
seg
(1)=>doutb(5),seg(0)=>doutb(4),
q3=>doutb1);--decoder的映射
u14:
decoderportmap(seg(3)=>doutb(3),seg
(2)=>doutb
(2),
seg
(1)=>doutb
(1),seg(0)=>doutb(0),
q3=>doutb2);--decoder的映射
u15:
decoderportmap(seg(3)=>doutc(7),seg
(2)=>doutc(6),
seg
(1)=>doutc(5),seg(0)=>doutc(4),
q3=>doutc1);--decoder的映射
u17:
decoderportmap(seg(3)=>doutd(7),seg
(2)=>doutd(6),
seg
(1)=>doutd(5),seg(0)=>doutd(4),
q3=>doutd1);--decoder的映射
u18:
decoderportmap(seg(3)=>doutd(3),seg
(2)=>doutd
(2),
seg
(1)=>doutd
(1),seg(0)=>doutd(0),
q3=>doutd2);--decoder的映射
endstruct;
3)参数设置及调用模块的功能仿真:
2.分频器的设计
pulse分频器的是一个32Mhz的分频器,这里是基于50Mhz的电源时钟频率,要用来作为1Hz的秒脉冲时钟,其分频系数为32×106。
1)VHDL描述
counter:
process(clock,en)
variablecount2:
integer;
variableclk0:
std_logic;
begin
ifen='0'thencount2:
=0;clk0:
='0';
elsifclock'eventandclock='1'thencount2:
=count2+1;
ifcount2=32000000thenclk0:
='1';
elsifcount2=64000000thencount2:
=0;clk0:
='0';
endif;
endif;
clk<=clk0;
endprocess;
2)功能仿真波形
为了方便观察,波形中将分频系数改为6分频,仿真波形如下所示:
图6分频器的仿真
3.con1的设计
con1程序完成的是对SRAM的选则功能,设计中SRAM的片选信号为采用低电平有效,对应5个SRAM,分别存储设定的运行时间,氩气量,氮气量,靶电流和选靶模式。
1)con1的VHDL描述
entitycon1is
port(x:
instd_logic_vector(3downto0);
y:
outstd_logic_vector(4downto0));
endcon1;
architecturebhvofcon1is
begin
withxselect
y<="11110"when"0001",
"11101"when"0010",
"11011"when"0011",
"10111"when"0100",
"01111"when"0101",
"11111"whenothers;
endbhv;
2)功能仿真
如图所示,当x=0001时,y=11110,说明sram1被选中;同理,当x=0010时,y=11101,sram2被选中;
图7con1的功能仿真
4.con2的设计
con2完成的是对工艺运行层数的控制,其中包括镀膜自动运行层数(“b”)和设置参数层数(“a”)的控制,“s”是对“a”和“b”的选择,当s=“0”时,选择的是设置参数层数(“a”),当s=”1”时,选择镀膜自动运行层数(“b”);“s”是由控制运行时间的SRAM和decoder所确定的。
1)con2的VHDL描述
entitycon2is
port(a,b:
instd_logic_vector(3downto0);
s:
instd_logic;
c:
outstd_logic_vector(3downto0));
endcon2;
architecturebhvofcon2is
begin
process(s,a,b)
begin
ifs='0'thenc<=a;
elsec<=b;
endif;
endprocess;
endbhv;
2)con2的功能仿真
如图所示,当s=0时,输出为c=a;当s=1时,输出为c=b;
图8con2的功能仿真
5.con3的设计
con3用于对靶的控制,其功能表如下表2所示,over发出工艺运行完毕的信号,m是SRAM发出的设定参数。
M(SRAM)
靶1
靶2
靶3
Over
00000010
0
1
0
0
00000100
1
1
0
0
00000110
0
1
1
0
00000111
1
1
1
0
00000000
0
0
0
0
00000001
1
0
0
0
00000011
0
0
1
0
00000101
1
0
1
0
00001000
0
0
0
1
其它
0
0
0
0
表2选靶的对应模式表
1)con3的VHDL描述
architecturebhvofcon3is
begin
process(m)
begin
casemis
when"00000000"=>n<="000";over<='0';
when"00000001"=>n<="001";over<='0';
when"00000010"=>n<="010";over<='0';
when"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"=>n<="111";over<='0';
when"00001000"=>n<="000";over<='1';
whenothers=>n<="000";
endcase;
endprocess;
2)con3的功能仿真
图9:
con3的功能仿真
6.sram1的设计
sram1是一个静态存储器,它完成数据的读写功能,作为一个内部的数据存储器,起到了数据调用暂存的功能,以提高处理器处理数据的速度。
1)sram1的VHDL描述
architecturebhvofsram1is
subtypewordisstd_logic_vector(7downto0);--数组的定义
typememoryisarray(0to15)ofword;
signalsram:
memory:
=(others=>(others=>'0'));
signaladr_in:
integerrange0to15;
begin
adr_in<=conv_integer(adr);--二进制转换为十进制的地址
writ:
process(wr,cs,adr_in,din,sram,clk)--写入sram
begin
ifclk'eventandclk='1'then
ifcs='0'andwr='0'thensram(adr_in)<=din;
endif;
endif;
endprocess;
red:
process(adr_in,wr,sram,clk)--读出sram
begin
ifclk'eventandclk='1'then
if(wr='1')thendout<=sram(adr_in);
elsedout<=(others=>'Z');
endif;
endif;
endprocess;
endbhv;
2)功能仿真
wr是一个读写控制信号,当wr=0时,是写过程,把数据写入到地址线所表示的地址中;
当wr=1时,是读的过程,将地址线代表的地址中的数据读出。
图10sram1的功能仿真
7.sconter的设计
sconter是一个可配置的十进制递减计数器,它完成的是每一层镀膜时间的计数,此参数是在运行前设定的,当镀层镀的时间计数到零时,它输出的层数自动加1跳到下一层运行。
1)VHDL硬件描述
architecturebhvofsconteris
begin
process(en,clk)
variablescnt:
std_logic_vector(7downto0);
variablesc,sc1:
std_logic_vector(3downto0);
begin
ifen='0'thenscnt:
="00000000";
sc:
="0000";sc1:
=sc-1;f<=sc;
elsif(clk'eventandclk='1')then
ifscnt="00000000"then
scnt:
=dd;sc1:
=sc1+1;f<=sc1;f0<=sc1;qq<=scnt;
elsifscnt="00010000"thenscnt:
="00001001";
qq<=scnt;--输出到译码显示器
elsifscnt="00100000"thenscnt:
="00011001";
qq<=scnt;
elsifscnt="00110000"thenscnt:
="00101001";
qq<=scnt;
elsifscnt="01000000"thenscnt:
="00111001";
qq<=scnt;
elsifscnt="01010000"thenscnt:
="01001001";
qq<=scnt;
elsifscnt="01100000"thenscnt:
="01011001";
qq<=scnt;
elsifscnt="01110000"thenscnt:
="01101001";
qq<=scnt;
elsifscnt="10000000"thenscnt:
="01111001";
qq<=scnt;
elsifscnt="10010000"thenscnt:
="10001001";
qq<=scnt;
elsescnt:
=scnt-1;qq<=scnt;
endif;
endif;
endprocess;
2)功能仿真
输入的是一个8位二进制数,而在译码器中是每4位译码作为十进制在数码管中显示的,把高四位称作“十位”,低4位作为“个位”,在BCD码的4位二进制编码中只用了10个,由图可以看出,从9递减到0后,输出家加1,完成了所需功能
图11sconter的功能仿真
8.decoder的设计
decoder是一个由7段数码管构成的译码器,如下表3给出了七段数码管译码器的真值表。
表3decoder的真值表
1)VHDL的硬件描述
architecturebhvofdecoderis
begin
process(seg)
begin
casesegis
when"0000"=>q3<="0000001";--0
when"0001"=>q3<="1001111";--1
when"0010"=>q3<="0010010";--2
when"0011"=>q3<="0000110";--3
when"0100"=>q3<="1001100";--4
when"0101"=>q3<="0100100";--5
when"0110"=>q3<="0100000";--6
when"0111"=>q3<="0001111";--7
when"1000"=>q3<="0000000";--8
when"1001"=>q3<="0000100";--9
whenothers=>q3<="1111111";--0
endcase;
endprocess;
endbhv;
2)decoder的功能仿真
如图所示,当seg=0010时,q3=0010010;
当seg=1101(others)时,q3=1111111;
图12decoder功能仿真
3.3通信模块的设计
异步收发器常用于短距离、低速、低成本的微机与下位机的通信,在此作为真空镀膜机的FPGA控制器与复合真空计之间的通信接口,下图为异步收发器的原理框图,分成三个字模块和一个总模块:
波特率发生器、接收模块、发送模块、顶层映射模块。
这里采用了4800b/s的波特率,采样时采用了波特周期的1/8时钟,接收的是6个8位数据,因此没开始接受6帧的数据作为并行输出;发送机发送的是8位的握手信号,其UART的数据帧格式如下:
由于串行数据帧和接收机时钟是异步的,因而把逻辑1转为逻辑0作为一个数据帧的起始位,为了避免毛刺现象得到正确的起始位,要求接收到的起始位在波特率时钟采样的过程中至少有一半都属于逻辑0,才认为接收到的是起始位,所以起始位至少需要4个连续波特时钟BCLK周期的的逻辑0被接收,才认为起始位被接收到,接着数据位和奇偶校验位将被隔8个连续bclk周期被采样一次,即将在每个位的中点处被采样。
1.UART顶层模块设计
1)VHDL描述如下:
architecturebehavioralofuartis
componentpulsetr
port(clk:
instd_logic;
reset:
instd_logic;
bclk:
outstd_logic);
endcomponent;
componentt_uartr
port(bclk,reset:
instd_logic;
ready:
instd_logic;
txd:
outstd_logic);
endcomponent;
componentR_UARTR
port(reset,bclk:
instd_logic;
rxd:
instd_logic;
rout:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 真空镀膜 控制系统 设计