回复 30# sun30411
谢谢您的讲解,非常受教。 的确以前只考虑功能实现,而没考虑可综合与否。
我又重新写了一遍,经综合和简单波形仿真是可以的。麻烦指教。
- module loop(
- input clk,
- output reg [7:0] i,
- output reg [7:0] j,
- output reg [7:0] k,
- output reg [7:0] l,
- output reg second_round,
- output reg[15:0] avg,
- output reg[15:0] temp);
-
- initial
- begin
- i = 0;
- j = 0;
- k = 0;
- l = 0;
- avg = 0;
- temp = 0;
- second_round = 1'b0;
- end
- always @ (posedge clk)
- begin
- l <= (l == 2) ? 0 : (l + 1);
- k <= (k == 2 && l == 2) ? 0 : (l == 2) ? (k + 1) : k;
- j <= (j == 13) ? 0 : (k == 2 && second_round == 1'b1) ? (j + 1): j;
- i <= (i == 14 && j == 14) ? 0 : (j == 14) ? (i + 1): i;
-
- second_round <= (k == 2 && l == 2) ? (~second_round) : second_round;
- avg <= (k == 2 && l == 2 && second_round == 1'b1) ? 0 : (second_round == 1'b0) ? avg + 1: avg;
- temp <= (k == 2 && l == 2) ? 0 : (second_round == 1'b1) ? (temp+avg) : 0;
- end
-
- endmodule
复制代码 |