集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1290|回复: 0

分频器里面可以进行加操作吗

[复制链接]
孤身漂泊 发表于 2010-10-21 21:07:04 | 显示全部楼层 |阅读模式
分频器里面可以进行加操作吗?比如一个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
结果总是出错:不能解决多重驱动        !请问有没有什么好的解决办法啊!
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-18 19:46 , Processed in 0.078131 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表