精華區beta Electronics 關於我們 聯絡資訊
寫 code 的一些心得分享 如果有 更好的 coding style 請不吝指正 其實我是想賺好文 XD ------------------------------------------------------- counter 的寫法 reg [4:0] counter; //會變成 FF or register wire [4:0] counter_next; //訊號線 always @(posedge clk or negedge reset) if(~reset) counter <= 5'b0; else counter <= counter_next; assign counter_next = (enable) ? counter + 1'b1 : 0 ; 這樣可以很清楚的將 edge triage (sequental circuit) 和 level triage (combinational circuit) 分開 會比下面寫法好 always@(posedge clk or negedge rst) if(~rst) counter <= 5'b0; else counter <= counter + 1'b1; ----------------------------------------------------------- 而Final State Machine寫法也是 把 sequential 和 combinational 分開寫 * 表示會用到的變數 // Internal State REG reg[StateSize-1:0] state; reg[StateSize-1:0] next_state; //FSM state assignment //Sequental circuit always @ (posedge clk or negedge rst_n) begin if (~rst_n) begin state <= IDLE; end else begin state <= next_state; end end ///////////////////////////////////////////// //Combinational circuit always @( * ) begin next_state = IDLE; case (state) IDLE: begin if( * ) begin next_state = A; end else begin next_state = B; end end A: begin if( * ) begin next_state = B; end else begin next_state =IDLE; end end B: begin if( * ) begin next_state = A; end else begin next_state =B; end end default : begin $display ("Moudle State : Error State !!"); end endcase end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.31.163.214 ※ 編輯: DecadentX 來自: 61.31.163.214 (12/30 04:09)
paullai:推~ 12/30 11:48