Hallo, ich habe folgendes Problem: Ich versuche PWM-Werte aus den always Blöcken den jeweiligen Outputs MTRR_P usw. mit innerhalb der Bedingungsoperatoren zuzuweisen. Jedoch erhalte ich laut der Simulation dauernd eine 1 an jedem Ausgang. Wo kann der Fehler liegen?
1 | module PWM ( |
2 | input CLK_50, |
3 | |
4 | output MTR_Sleep_n, |
5 | |
6 | output MTRL_P, |
7 | output MTRL_N, |
8 | output MTRR_N, |
9 | output MTRR_P |
10 | |
11 | ); |
12 | |
13 | reg PWM_O_R ; |
14 | reg PWM_O_L ; |
15 | |
16 | reg [15:0] CNT1 ; |
17 | reg [15:0] CNT2 ; |
18 | |
19 | |
20 | assign MTR_Sleep_n = 1'b1; |
21 | |
22 | |
23 | //---- |
24 | //L_EMOTOR |
25 | assign MTRL_N = (!1)?1: ((0)?0 : PWM_O_L); |
26 | assign MTRL_P = (!1)?1: ((0)?PWM_O_L : 0 ); |
27 | //R_EMOTOR |
28 | assign MTRR_P = (!1)?0: ((0)?0 : PWM_O_R ); |
29 | assign MTRR_N = (!1)?1: ((0)?PWM_O_R: 0 ); |
30 | |
31 | //assign MTRL_N = ~1?1: ((1)?0 : 1); |
32 | //assign MTRL_P = (~1)?0: ((0)?1 : 0 ); |
33 | ////R_EMOTOR |
34 | //assign MTRR_P = ~1?0: ((0)?0 : 1 ); |
35 | //assign MTRR_N = ~1?1: ((0)?1: 0 ); |
36 | |
37 | //assign MTRL_N = (!1)?1: 0; |
38 | //assign MTRL_P = (1)?0:1; |
39 | ////R_EMOTOR |
40 | //assign MTRR_P = !1?0:1; |
41 | //assign MTRR_N = 1?1:0; |
42 | |
43 | |
44 | always @ ( posedge CLK_50 ) begin |
45 | CNT1 <= CNT1 + 1; |
46 | if (CNT1 > 16'h64 ) PWM_O_R <= 0; |
47 | else PWM_O_R <= 1; |
48 | end |
49 | |
50 | always @ ( posedge CLK_50 ) begin |
51 | CNT2 <= CNT2 + 1; |
52 | if (CNT2 > 16'h64 ) PWM_O_L <= 0; |
53 | else PWM_O_L <= 1; |
54 | end |
55 | |
56 | endmodule |