作者DecadentX (失踪很久的钥匙)
看板Electronics
标题[心得] verilog
时间Sat Dec 30 04:08:07 2006
写 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)
1F:推 paullai:推~ 12/30 11:48
2F:推 paullai:电板也非常欢迎此类文章 ^^/ 12/30 11:52
3F:推 paullai:也欢迎大家投稿~ 12/30 11:54
4F:推 pow:"Finite State Machine" 12/30 12:29
5F:推 mouein:XD 楼上推才看到~~ 12/30 13:17
6F:推 Seals:厚 VHDL 地时代已经过去了嘛? :( 12/30 19:21
7F:推 jcboy:两个都会不就好了吗:)? 12/31 23:49
8F:→ DecadentX:最後状态机~~~XD 01/03 00:03