@(posedge ticker) is not synthesizable, it's only used in simulation testbenches as an event control to wait until the rising edge of the signal ticker.
For edge triggered logic that is synthesizable you have to use
always @ (posedge ticker) if you want to synthesize the module. As
ticker is used as a clock this is a bad design especially as it uses the output of a multi input AND gate. You should probably place all your logic in the
always @ (posedge CLK) block and directly use the value of count to do the stuff with
AN that you want (instead of trying to write a software procedural implementation).
Here is an example..
Code Verilog - [expand] |
1
2
3
4
5
6
7
8
9
10
11
12
13
| always @ (posedge clk) begin
cnt <= cnt + 1;
if (cnt == 3) begin
x <= 1'b1; // pulse while cnt is 4
end else if (cnt == 8) begin
x <= 1'b1; // pulse while cnt is 9
end else if (cnt == 16) begin
x <= 1'b1; // pulse while cnt is 17
end else begin
x <= 1'b0;
end
end |
You need to get a book on Verilog, the code you are writing is not synthesizable code nor does it follow synthesizable templates. Verilog is used to describe hardware and is not written like a programming language. Unless you know what your circuit looks like how are you going to describe it? (i.e. the code ends up looking like a piece of rubberware - 1/2soft-1/2hard-ware).