请教达人帮我看看用verilog写的PWM哪里出错了
时间:10-02
整理:3721RD
点击:
我首先实现了一个用两位拨码开关控制输出的PWM,代码如下:
现在我想加入一个控制按键key3,当键值为1时,让端口LED1输出PWM波,也就是说PWM_out赋给LED1就行了,同样当键值为0时,让LED2输出PWM波。
我是这样写的:
这个有错误
Error (10043): Verilog HDL unsupported feature error at pwm.v(35): Procedural Continuous Assignment to register is not supported
- modulepwm(clk,switches,PWM_out);
- parameter sd = 12500;//这是最小间隔,2个播码开关总共可以有4级的强度。每级的计数间隔为sd
- input clk; //50MHz
- input [1:0] switches;
-
- output PWM_out;
- reg PWM_out;
- reg [15:0] counter = 0;
-
- always@ (posedge clk)begin
- counter <= counter+1;
- if(counter<=switches*sd)
- PWM_out <= 1;
- else
- PWM_out <= 0;
- if (counter >=50000)
- counter <= 16'd0;
- end
- endmodule
现在我想加入一个控制按键key3,当键值为1时,让端口LED1输出PWM波,也就是说PWM_out赋给LED1就行了,同样当键值为0时,让LED2输出PWM波。
我是这样写的:
- always@ (posedge clk or negedge rst_n) begin
- if(!rst_n) counter <= 16'd0;
- else if(key3)
- assign LED1 = PWM_out;
- else assign LED2 = PWM_out;
- 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
