【FPGA】Verilog设计入门——时序模块及其Verilog表述

这篇具有很好参考价值的文章主要介绍了【FPGA】Verilog设计入门——时序模块及其Verilog表述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.边沿触发型触发器及其Verilog表述

2.电平触发型锁存器及其Verilog表述 

3.含异步复位/时钟使能型触发器及其Verilog表述

4.同步复位型触发器及其Verilog表述 

5.异步复位型锁存器及其Verilog表述

6.Verilog的时钟过程表述的特点和规律  

7.异步时序模块的Verilog表述 

8.4位二进制计数器及其Verilog表述  

9.功能更全面的计数器设计  


1.边沿触发型触发器及其Verilog表述

新语法:posedge
定义:对上升沿敏感的表述。
作用:告诉综合器构建边沿触发型时序元件。
与posedge对应的negedge,下降沿敏感表述。
凡是边沿触发性质的时序元件必须在敏感信号表中使用边沿敏感表述,而不用此表述产生的时序电路都是电平敏感时序电路。
 

2.电平触发型锁存器及其Verilog表述 

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

        当CLK为高电平时,Q随着D的变化而更新,当CLK为低电平时,将保存其在高电平时锁入的数据。 

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

工作原理: 时钟上升沿到来时,将D送入Q,属于边沿触发,敏感信号表中posedge表述。

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

当CLK=1,Q随着D的变化而更新,当CLK=0时, Q值保持,属于电平触发,敏感信号表列电平信号。  

3.含异步复位/时钟使能型触发器及其Verilog表述

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

      异步:独立于时钟控制的复位控制端RST,在任意时刻,只要RST=0,D触发器的输出端即刻被清零,与时钟的状态无关。EN的功能是,只有当EN=1时,时钟上升沿才有效。

module DFF2(RST,CLK,EN,D,Q);
	input RST,CLK,EN,D;
	output Q;
	reg Q;
	always@(posedge CLK or negedge RST)begin
	if(!RST)
	   Q<=0;
	   else if(EN)
	     Q<=D;
	end
endmodule

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

复位信号RST=0时,不管时钟信号是何种状态,Q即刻被清0。 

4.同步复位型触发器及其Verilog表述 

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

同步:指RST信号只有在时钟信号有效时,才能起作用。

module DFF3(RST,CLK,D,Q);
	input RST,CLK,D;
	output Q;
	reg Q;
	always@(posedge CLK)begin
	if(RST==1)
	 Q<=0;
	 else 
	   Q<=D;
	 end
endmodule

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块复位信号RST=1时,且时钟上升沿到来,才对Q清0;反之复位信号RST=1时,时钟上升沿没有到来,则Q不能被清0。 

5.异步复位型锁存器及其Verilog表述

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

异步复位:RST独立于时钟的状态;
锁存器:属电平敏感型电路,类似组合逻辑电路描述法。
verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块RST=0时,不管CLK是何种状态,Q即刻被清0。 
RST=1时,CLK=1时,Q随D的变化而变化,CLK=0时,Q保持CLK=1时的值。 

6.Verilog的时钟过程表述的特点和规律  

1)敏感信号表含有negedge和posedge时,选择性地改变敏感信号的放置是可以影响综合结果的,例如,同步复位型触发器和异步复位型触发器; 
2)敏感信号表中一旦含有negedge或posedge的边沿敏感信号后,所有其他电平敏感型信号都不能放在敏感信号表中;
3)如果在同一模块中含有独立于主时钟的时序或组合逻辑,必须在另一过程描述。 

对于边沿触发型时序电路,遵循以下规律:
1)如果将信号定义为边沿敏感信号,则必须在敏感信号表中用negedge或posedge给出表述, 但在always@过程结构中不能再出现该信号了,例如,时钟触发器时钟CLK。
2)如果一个对应于时钟的电平敏感的异步控制信号,则除了在敏感信号表中给出对应的表述外,在always@过程结构中必须明示这一信号的逻辑功能,如异步RST。
3)如果一个信号是对应于时钟的同步控制信号,则不允许在敏感信号表中出现,如同步RST。
4)敏感信号分为两种类型:电平敏感信号和边沿敏感信号,在同一过程的敏感信号表中,只能放置一种敏感信号,不能混放。
 

7.异步时序模块的Verilog表述 

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

module AMOD(D,A,CLK,Q);
    input D,A,CLK;  output Q;
    reg Q,Q1;
    always@(posedge CLK)begin
       Q1=~(A|Q);
   end
   always@(posedge Q1)begin
      Q=D;
   end
endmodule

8.4位二进制计数器及其Verilog表述  

        分析:最简单的4位二进制计数器应该有一个时钟输入CLK,4位二进制的计数值输出Q[3:0],每进入一个时钟,输出数据Q将增加1,随着时钟CLK的不断出现,计数值Q从0000至1111循环输出值。 

module CNT4(CLK,Q);
  input CLK;
  output [3:0] Q;
  reg [3:0]Q1;
  always@(posedge CLK)
  begin
    Q1<=Q+1;
  end
  assign Q=Q1;
endmodule

verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

9.功能更全面的计数器设计  

带有异步复位、同步使能和预置型十进制计数器。
      输入输出分析:
      输入信号包括时钟信号CLK、异步复位信号RST,同步使能信号EN,同步预置信号LOAD,预置数DATA[3:0]。
     输出信号包括计数输出DOUT[3:0],计数溢出时的进位信号COUT。
      逻辑功能分析:
     1)异步复位:任意时刻,只要RST为0,计数器都有清0;
     2)当RST=1、使能EN=1,且CLK上升沿到来时,当LOAD=0将DATA预置给计数输出值;LOAD为1时,计数器正常计数,当计数值为9时,COUT输出进位值1。
verilog电平触发和边沿触发,MATLAB/FPGA/Simulink仿真技巧,# FPGA,fpga开发,Verilog,时序模块

 


 文章来源地址https://www.toymoban.com/news/detail-732636.html

到了这里,关于【FPGA】Verilog设计入门——时序模块及其Verilog表述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA模块使用Verilog调用另一个Verilog模块

    FPGA模块使用Verilog调用另一个Verilog模块 在FPGA设计中,常常需要将一个大的模块分解成多个子模块来实现。而这些子模块通常由Verilog代码编写而成。在设计中,我们需要通过调用这些子模块来实现整体的功能。本文将介绍如何使用Verilog调用另一个Verilog模块。 为了说明这个过

    2024年02月07日
    浏览(40)
  • 时序电路的Verilog设计——基本时序元件

    目录 一、Verilog语法 1.1 时钟边缘检测函数 1.2 边缘触发型时序模块的verilog设计规律

    2024年02月22日
    浏览(48)
  • 【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:触发器电路    ​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用IO:Sw

    2024年02月11日
    浏览(32)
  • [从零开始学习FPGA编程-32]:进阶篇 - 基本时序电路-D触发器(Verilog语言)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:  目录 第1章 什么是时序电路 1.1 时序电路 1.2 什么是触发器

    2023年04月08日
    浏览(38)
  • Verilog学习记录(一):时序逻辑代码设计和仿真

    本次学习的内容来自B站:Verilog零基础入门  其他相关引用以贴上原链接 时序逻辑电路 一、计数器 1.原理及代码实现 2.Modelsim仿真 二、四级伪随机码发生器 1.原理及代码实现 2.Moselsim仿真 总结  时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称,主要由 存储电路

    2024年02月03日
    浏览(41)
  • fpga verilog rs232 发送模块实现

    RS-232是一种串行通信协议,用于在计算机和其他外部设备之间进行数据传输。RS-232定义了电气特性、信号级别、机械特性和传输速率等规范,为串行通信提供了一种标准化的接口。 RS-232通常使用DB9连接器,用于传输和接收数据、控制信号以及地线连接。 但除了235脚其它基本

    2024年02月03日
    浏览(42)
  • 【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门

    硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门,有不懂的地方可以评论进行讨论! 推荐给大家一款刷题、面试的神器 ,我也是用这一款

    2024年02月03日
    浏览(32)
  • Verilog基础语法(4)之模块和端口及其例化和处理

    Verilog进行FPGA/IC设计值,通常划分为各个子模块,木模块之间可能相互例化,并在顶层统一例化,并连接成一个顶层模块文件。 基本的模块模板: 如果模块内的变量位宽参数化,则模块模板为: 例化带参数的模块: 端口类型/端口描述 input 设计模块只能使用其input端口从外部

    2024年02月13日
    浏览(30)
  • 【FPGA/verilog -入门学习4】verilog 实现多路脉冲计数

    设计一个脉冲计数器,其功能如下 输入脉冲:4路脉冲信号,分别对每路进行脉冲检测并计数 使能信号:高电平进行计数,低电平清零计数器 计数器:在使能信号高电平期间,对脉冲信号的上升沿进行检测并递增计数值 编写测试脚本,进行仿真验证 使用上一章的一路脉冲检

    2024年02月04日
    浏览(42)
  • 【FPGA/verilog -入门学习2】verilog 生成上升沿下降沿脉冲

    使用脉冲边沿检测法设计一个上下降沿检测功能 preg1 =pluse preg2=preg2 preg1 比pluse 晚一个时钟, preg2比preg1晚一个时钟 在利用 与/非指令合并,生成上升沿的一个脉冲的 r_pluse = {r_pluse[0],pulse}; //等效于 r_pluse[0] =pluse r_pluse[1] =r_pluse[1] vlg_design testbench_top 3次测试中,测试1,测试2 ,

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包