- 4
- 0
- 约1.33万字
- 约 10页
- 2016-11-27 发布于重庆
- 举报
基于VerilogHDL的車载DVD位控子程序
//异常判断子程序
module ABN_DIFF(CLKIN,DATA,TIME00,ADCABCP2,ADCABCP5,
VPA,VPB,VPC,VPD,HPE,HPF,HPG,HPH,
MOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2,
MOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5,
ERROR0,MOTOR11P4,MOTOR12P4,MOTOR21P4,MOTOR22P4
);
input CLKIN,VPA,VPB,VPC,VPD,HPE,HPF,HPG,HPH;
input MOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2;
input MOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5;
input [2:0] ADCABCP2,ADCABCP5;
input [12:0] TIME00;
input [7:0] DATA;
output ERROR0;
output MOTOR11P4,MOTOR12P4,MOTOR21P4,MOTOR22P4;
reg MOTOR11P4,MOTOR12P4,MOTOR21P4,MOTOR22P4;
reg ERROR0;
reg [7:0] V_POSTION4,H_POSTION4;
parameter VA=20,VB=180,VC=210,VD=240,HE=20,HF=180,HG=210,HH=240;
always @(posedge CLKIN)
begin
if(ADCABCP2==3b000 || ADCABCP5==3b000)
begin //水平位置
V_POSTION4=DATA ;
if((MOTOR11P2==1 || MOTOR12P2==1 || MOTOR11P5==1 || MOTOR12P5==1)
TIME00=4000 (V_POSTION4VA V_POSTION4VB))
begin
ERROR0=1; //出盒或进盒过程中出错
MOTOR11P4=0;
MOTOR12P4=0;
end
if((MOTOR11P2==1 || MOTOR12P2==1 || MOTOR11P5==1 || MOTOR12P5==1)
TIME00=2666 (VPB==0 VPC==0 VPD==0))
begin
ERROR0=1; //水平位置调节时出错
MOTOR11P4=0;
MOTOR12P4=0;
end
end
if(ADCABCP2==3b001 || ADCABCP5==3b001)
begin
H_POSTION4=DATA ;
if(((MOTOR21P2==1 || MOTOR22P2==1) || (MOTOR21P5==1 || MOTOR22P5==1))
TIME00=4000 (H_POSTION4HE H_POSTION4HF))
begin
ERROR0=1; //大角度翻转时出错
MOTOR21P4=0;
MOTOR22P4=0;
end
if(((MOTOR21P2==1 || MOTOR22P2==1) || (MOTOR21P5==1 || MOTOR22P5==1))
TIME00=2666 (HPF==0 HPG==0 HPH==0))
begin
ERROR0=1; //角度调节时出错
MOTOR21P4=0;
MOTOR22P4=0;
end
end
if(ERROR0==1 TIME00=4000)
begin
ERROR0=0;
end
end
Endmodule
//DIVIDER FREQUENCY 分频子进程
module DIV_COUNT(CLKIN,TIME_S,ADIVDER,TIME00);
input CLKIN,TIME_S;
output ADIVDER;
output [12:0] TIME00;
reg [23:0] COUNT;
reg [12:0] TIME00;
原创力文档

文档评论(0)