打印
[FPGA]

D触发器

[复制链接]
10700|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2023-7-28 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电路图:
Verilog代码:
语法说明:
时序逻辑 :电路具有**功能,电路状态不但与当前输入有关,还与前一时刻的状态有关。
同步逻辑 :在同一的时钟信号激励下工作,输出只在时钟的上升沿(或者下降沿)发生变化。
reg :除wire类型外,另外一种常用的数据类型,一般表示寄存器类型数据,不过并不绝对,记住一条原则:在always块内被赋值的信号应定义成reg型,用assign语句赋值的信号应定义成wire型。
always :除assign外,另外一种实现赋值操作的关键字,两者都不可嵌套,区别在于,assign语句只能实现组合逻辑赋值,且一个assign语句后面只能跟一条赋值表达式。而always即能实现组合逻辑赋值,又能实现时序逻辑赋值操作,且可以包含多条赋值表达式,多条赋值表达式,则应位于begin/end对中间。
posedge :verilog关键字,表示上升沿的意思。Always@(posedge clk)表示在clk信号的上升沿的时刻,执行always块内部的语句,与此相对应的,是表示下降沿的关键字negedge。凡是带有posedge或negedge的always块,都会被综合成时序逻辑电路。
阻塞/非阻塞赋值:采用"\<="进行赋值的语句,称为"非阻塞赋值",采用"="进行赋值的语句,称为"阻塞赋值"。在always块中,阻塞式赋值方式语句执行有先后顺序,而非阻塞赋值语句则是同时执行。因此,在时序逻辑电路中,两种赋值方式可能或综合出不同的电路结构。如下所示
显然,第二种电路才是符合我们预期的设计,为避免出现一些稀奇古怪的电路,我们只需记住以下规则:
i:在组合逻辑电路中,使用阻塞式赋值方式"=";
ii: 在时序逻辑电路中,使用非阻塞式赋值方式"\<="
iii:在同一个always块内,只能存在一种赋值方式。
iv:一个信号,只能在一个always或一个assign语句下赋值。
v:原则上来说,一个always块内只处理一个或一类信号,不同的信号可在不同的always块内处理。
vi: always块内只能对reg型信号进行处理,不能对wire型数据赋值,也不能实例化模块

使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2023-7-28 18:02 | 只看该作者
带同步复位的D触发器
Verilog代码
语法说明:
同步复位 :复位只能发生在在clk信号的上升沿,若clk信号出现问题,则无法进行复位。
If/else :always块中常用的条件判断语句,可以嵌套,有优先级,一般来说,应将复位处理逻辑放在第一个if语句下,使其具有最高的优先级,该语句只能在always块内使用。另外一种比较常用的条件判断语句是case。与if/else语句不同,case语句不带优先级

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1061

主题

11320

帖子

26

粉丝