微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教达人帮我看看用verilog写的PWM哪里出错了

请教达人帮我看看用verilog写的PWM哪里出错了

时间:10-02 整理:3721RD 点击:
我首先实现了一个用两位拨码开关控制输出的PWM,代码如下:

  1. modulepwm(clk,switches,PWM_out);

  2. parameter sd = 12500;//这是最小间隔,2个播码开关总共可以有4级的强度。每级的计数间隔为sd
  3. input   clk; //50MHz
  4. input [1:0]  switches;

  5. output  PWM_out;
  6. reg PWM_out;
  7. reg [15:0] counter = 0;

  8. always@ (posedge clk)begin
  9.       counter <= counter+1;
  10.       if(counter<=switches*sd)                  
  11. PWM_out <= 1;
  12.              else
  13.              PWM_out <= 0;
  14.              if (counter >=50000)
  15.                     counter <= 16'd0;
  16.       end
  17. endmodule

复制代码


现在我想加入一个控制按键key3,当键值为1时,让端口LED1输出PWM波,也就是说PWM_out赋给LED1就行了,同样当键值为0时,让LED2输出PWM波。
我是这样写的:

  1. always@ (posedge clk or negedge rst_n) begin
  2.         if(!rst_n) counter <= 16'd0;
  3.         else if(key3)
  4. assign LED1 = PWM_out;
  5. else  assign LED2 = PWM_out;
  6. end

复制代码


这个有错误
Error (10043): Verilog HDL unsupported feature error at pwm.v(35): Procedural Continuous Assignment to register is not supported

在always块中 不能出现assign语句


请问该如何修改呢?

[img][/img]

把 assign  A= B  改为 A<=B 两处都改 语法就没问题了

楼上说的有道理。

去掉第2个always,加:
assign LED1 = key3 & PWM_out;
assign LED2 = (~key3) & PWM_out;

tks for the useful answer

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top