verilog 写rtl注意事项_verilog代码编写注意事项

本文介绍了Verilog RTL代码编写的一些关键注意事项,包括避免使用for循环以减少硬件资源,注意代码风格的选择,正确处理inout端口,提供清晰的注释,使用状态机实现顺序逻辑,区分Moore和Mealy状态机,以及处理异步复位和亚稳态问题。这些要点有助于提高设计效率和代码质量。
摘要由CSDN通过智能技术生成

Verilog

代码编写注意事项

1

for

循环

虽然

for

是可以综合的,但是在写代码时一般不用,因为会占用很多硬件

资源,而且一般我们设计的是时序逻辑设计,用到

for

循环的地方很少。

2

代码风格:

代码风格不是一层不变的,要具体逻辑具体分析。对于同一个逻辑问题,

if

else

case

只不过是形式上的不同,综合工具优化功能足够强的话,就会看穿这

个形式上的不同,实现逻辑上的相同。

3

inout

端口的使用

inout

作为输入端口使用时,一定要把它置为高阻态,当

inout

端口作为输出口使用时,直接对输出信号赋值即可。

例如:

inout

wire

io_data ;

//inout

端口。

input

reg

out_data

;

//

需要向

io_data

输出的数据。

input

reg

io_link

;

//inout

口方向控制。

Assign

io_data = io_link ? out_data : 1

bz ;

/*

这步是关键,

inout

作为输

入端口使用时,

io_link=0

,

必须把

io_data

置为高阻态。当

inout

端口作为输出口使用时,

io_link=1 ,

out_data

赋值给

io_data

就可以了。

*/

4

注释:代码注释时一个最大的共同错误是,注释描述的只是代码本身所实现的功能。正

确的注释写法是,

应该假定读者是一个有经验的工程师,

他熟悉

verilog

语言本身,

但对

于该工程并不熟悉。注释的最高境界是:抛开源代码,单从注释就明白设计者所要实现

的功能。

例如:

错误的注释

addr <= addr + 1

b1 ;

//addr

自增

1.

这句注释不会给读者提供任何有用的信息。

正确的注释

,(

假定该工程是

FPGA

MCU

通信

)

addr<= addr + 1

b1 ; //

MCU

写入一个字节数据后,

addr

自增

1

,以供

MCU

读取下一个字节数据。

5

状态机

verilog

描述的电路大都是并行实现的,但是对实际的工程应用,往往需要让

硬件来实现一定具有一定顺序的工作,这就要用到状态机的思想,构成状态机的基本要

素是状态机的输入(如

SRAM

wr_req

,rd_req

)

、输出(状态变化后引起的变化)

、状

态(如

SRAM

IDLE

WR_S1

RD_S1

等等)

,状态机分为有限状态机和无限状态机,

实际设计中一般都指有限状态机。

6

Moore

Mealy

Moore

型状态机的状态变化仅和当前状态有关,

而与输入条件无关,

Mealy

型状态机的状态变化不仅与当前状态有关,还取决于当前的输入条件。

7

状态机的写法:一段式、两段式、三段式,它们在速度、面积、代码可维护性等各个方

面互有优劣,对三种写法在不同项目应用中进行不同的分析。

8

异步复位

/

同步复位的亚稳态状况

每个寄存器都有一个端口是

clr

异步清零端,亚稳

态出现的概率大。

同步复位需要消耗额外的

FPGA

的内部资源,

无法充分利用

FPGA

部专用的清零端口

CLR

,但是出现亚稳态的概率大大降低了(只是降低,不能避免)

9

亚稳态:

0

1

的状态不稳定。解决亚稳态的方法就是:异步复位、同步释放的双缓

冲电路。该电路由两个同一时钟沿触发的层叠寄存器组成,该始终必须和目标寄存器是

一个时钟域。

例如:

input

clk ;

//

系统时钟信号。

input

rst_n ;

//

输入复位信号,低电平有效。

output

rst_n2 ;

//

异步复位、同步释放输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值