| 分频器里面可以进行加操作吗?比如一个1:5000分频器,我用单片机发个数据让它加进去,编程总是无法实现 程序如下:
 module pwm1(dat,clkin,en,pwm1,pwm2,pwm3,clk,out);
 input   clk,clkin,en;
 input   dat;
 output  pwm1,pwm2,pwm3;
 
 output[5:0]  out;
 reg[5:0]  bliang;
 
 reg[6:0]  zkb;
 reg[6:0]  zkb1;
 reg[6:0]  zkb2;
 reg[31:0] fpb;
 reg[31:0] fpb1;
 reg[31:0] fpb2;
 reg[7:0]  xwei;
 reg[7:0]  xwei1;
 reg[7:0]  xwei2;
 
 reg[35:0]  shuju;
 reg[3:0]   adder;
 
 reg[31:0]  gdp;
 reg[31:0]  js;
 reg[31:0]  gdp1;
 reg[31:0]  js1;
 reg[31:0]  gdp2;
 reg[31:0]  js2;
 
 reg pwm_flag;
 reg pwm_flag1;
 reg pwm_flag2;
 
 assign pwm1=pwm_flag;
 assign pwm2=pwm_flag1;
 assign pwm3=pwm_flag2;
 assign out=bliang;
 
 always @(posedge clkin)
 begin
 if(en==0)
 begin
 shuju= shuju>>1;
 shuju[35] = dat;
 bliang[5:0]=shuju[35:30];
 end
 else  begin fpb=fpb;end
 end
 always @(posedge  en)
 begin
 case(shuju[35:32])
 0:begin fpb=shuju[31:0]; end
 1:begin fpb1=shuju[31:0]; end
 2:begin fpb2=shuju[31:0];end
 3:begin zkb[6:0]=shuju[31:25];gdp<=fpb*zkb/100;end
 4:begin zkb1[6:0]=shuju[31:25];gdp1<=fpb1*zkb1/100;end
 5:begin zkb2[6:0]=shuju[31:25];gdp2<=fpb2*zkb2/100;end
 6:begin xwei[7:0]<=shuju[31:24]; js<=js+fpb*xwei/360;end
 default    shuju<=shuju;
 endcase
 end
 always@(posedge clk )
 begin
 if(js>=fpb)
 begin  js<=0;           end
 else
 begin js<=js+1;     end
 if(js<gdp)
 begin  pwm_flag=1;        end
 else begin  pwm_flag=0;  end
 end
 always@(posedge clk)
 begin
 if(js1>=fpb1)
 begin     js1<=0;end
 else
 begin js1<=js1+1; end
 if(js1<gdp1)
 begin   pwm_flag1=1;   end
 else begin  pwm_flag1=0;  end
 end
 always@(posedge clk)
 begin
 if(js2>=fpb2)
 begin    js2<=0;end
 else
 begin js2<=js2+1; end
 if(js2<gdp2)
 begin   pwm_flag2=1;  end
 else begin  pwm_flag2=0;  end
 end
 endmodule
 结果总是出错:不能解决多重驱动        !请问有没有什么好的解决办法啊!
 |