verilog 写rtl注意事项_Verilog RTL编程实践 4_2 视频笔记

这篇博客介绍了Verilog RTL编程时应注意的事项,强调了使用状态机来控制逻辑,避免产生latch,并详细讲解了如何正确建模flip-flop。内容包括同步和异步复位、边沿触发、非阻塞赋值的使用,以及状态机的设计原则。同时,还讨论了模块的输入输出、代码风格以及对于移位寄存器和计数器的建模方法。
摘要由CSDN通过智能技术生成

控制最好用状态机来做。

除了触发器,就会出现latch

coding style 避免出现latch

code switch 需要就认为生成一些latch

module 同步复位

输入

输出

if、else成对出现

而这边少一个else

说明:

reset为0——清零

g——1——通过

变量为高电平时

任何信号都可以传过去

低电平就锁定了——latch(电路功能)

与触发器建模的不同:生成latch——

生成flip-flop

module

endmodule就是一个建模的一个格式

D,时钟,复位,Q

输入

输出说明

对flip-flop建模的话就用

如果异步复位信号取反

则清零

否则

Q取反

逻辑代码生成的就是

低电平有效的触发器

在verilog中写了不正确的flip-flop

生成电频 ——level敏感的

一般要写成always@(posedge clk)

这样生成一个flip-flop

这是edge边沿敏感的才能形成真正的flip-flop

要写成q<=d

才正确

这是正确的同步复位信号

同步写法——同步在clk上升沿上

异步:

always@(posedge clk or negedge resetn)

写法错误——要写成<=非阻塞赋值

另一种flip-flop既有异步也有同步复位

异步就同步到negedge Reset

而同步复位呢就同步到

posedge clk

触发器最容易形成移位寄存器

如果复位清零的话就是0

否则L=1

R=Q

f否则

for循环

Q=Q+1

16个flip-flop串起来

这就是用for循环对移位寄存器建模

可进行设置数值的建模

计数器建模:

如果清零就0

否则L=1

R=Q

否则就可以作为counter

RTL code 写法

加号可以综合

有限状态机

数字电路,包含预定义转态,在不同输入控制条件下,状态就变化。

米勒的状态机器

和当前状态,输入有关

数字电路上常见

一般,下一状态和当前状态输入若影响输出——mealy型

否则moore 型

三段式:状态跳转

状态跳转的条件

状态输出情况

一定要用非阻塞赋值,这个也没有用

循环减一的结构

1下0上

基本写法

为1往下跳

为0不动

首先根据功能要求画状态图

阻塞赋值和非阻塞赋值

time

region有block 区和非block区

RTL——register-transfer-level

怎么构建和测试一个module

下节课就把berilog过了一遍

接下来就将RTL code

Q:make file 里边include文件 一般来讲在c或者c++里边用单反引号‘

compile complex 里的

预告:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值