【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

这篇具有很好参考价值的文章主要介绍了【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载

示例:触发器电路

  【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

  • 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片 
  • 配置方式:USB-JTAG/SPI Flash
  • 高达100MHz 的内部时钟速度 
  • 存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A)
  • 通用IO:Switch :x8LED:x16Button:x5DIP:x8   通用扩展IO:32pin
  • 音视频/显示: 7段数码管:x8 VGA视频输出接口 Audio音频接口 
  • 通信接口:UART:USB转UART   Bluetooth:蓝牙模块 
  • 模拟接口: DAC:8-bit分辨率   XADC:2路12bit 1Msps ADC

目录

Ⅰ. 前置知识

0x00 利用7400搭建RS触发器

0x01 D触发器

0x02 带复位的D触发器

0x03 带置位/复位的D触发器

Ⅱ. Verilog实现

0x00 RS触发器(上升沿触发)

0x01 D触发器 (上升沿触发)

0x02 带复位的D触发器

0x03 同步置位/复位端口的上升沿 D 触发器

0x04 异步置位/复位端口的上升沿 D 触发器


Ⅰ. 前置知识

0x00 利用7400搭建RS触发器

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

注意:

a、由于【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位 时触发器输出保持,因此若初始状态【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位,仿真启动时会报错或状态不定。

b、根据触发器的定义,【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位应互补,因此【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位是非法状态。

 得出RS触发器的真值表如下:

输    入

输    出

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

Q

0

0

保持不变

0

1

1

0

1

0

0

1

1

1

1(0)

1(0)

0x01 D触发器

 在数字电路中,D触发器是最为简单也是最为常用的一种基本时序逻辑电路,它是构成数字电路系统的基础。

大体可分为如下几类:基本的D触发器;同步复位的D触发器;异步复位的D触发器;同步置位/复位的D触发器;异步置位/复位的D触发器。

设计上升沿触发的D触发器,即当检测到时钟上升沿到来时,触发器根据真值表输出:

触发器

D

CP

Q

Q’

D

X

0

保持

保持

D

X

1

保持

保持

D

0

上升沿

0

1

D

1

上升沿

1

0

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x02 带复位的D触发器

在数字电路中,一种常见的带有复位控制端口的上升沿D触发器的功能表如表所示:

触发器

R

D

CP

Q

Q’

D

0

X

上升沿(同步复位)

0

1

D

0

X

X(异步复位)

0

1

D

1

X

0

保持

保持

D

1

X

1

保持

保持

D

1

0

上升沿

0

1

D

1

1

上升沿

1

0

不难看出,同步复位意味着只有在时钟信号的上升沿到来并且复位控制端口的信号有效时,D触发器才进行复位操作,即将输出端口Q的值置为逻辑0,而把输出端口Q的值置为逻辑1;异步复位在于只要复位控制端口的信号有效,D触发器就会立即进行复位操作,这时的复位操作是与时钟信号无关的。

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x03 带置位/复位的D触发器

带有同步置位/复位端口的上升沿D触发器的逻辑电路符号如图所示:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

它的功能表如表所示:

触发器

S

R

D

CP

Q

Q’

D

1

0

X

上升沿(同步复位)

0

1

D

0

1

X

上升沿(同步复位)

1

0

D

1

1

X

0

保持

保持

D

1

1

X

1

保持

保持

D

1

1

0

上升沿

0

1

D

1

1

1

上升沿

1

0

不难看出,只有在时钟信号的上升沿到来并且同步置位/复位端口的信号有效时,D触发器才可以进行置位或者复位操作。

Ⅱ. Verilog实现

0x00 RS触发器(上升沿触发)

设计代码:

module RS(clk,R,S,q,qb);
input clk,R,S;
output q,qb;
reg q;
assign qb=~q;
always@(posedge clk) 
   case({R,S})
       2&apos;b01: q<=0;
       2&apos;b10: q<=1;
       2&apos;b00: q<=1&apos;bx;
       endcase
endmodule

仿真代码:

module test();
    reg clk,R,S;
    wire q,qb;
       RS uut(
            .R(R),
            .S(S),
            .clk(clk),
            .q(q),
            .qb(qb)
            );     initial
        begin
            clk=0;
        end
         
    always #10 clk=~clk; 
    initial
        begin
            R=0;S=0;
            #10 R=0;S=1;
            #20 R=1;S=0;
            #20 R=1;S=1;
            #20 $finish;
         end 
endmodule

仿真波形:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x01 D触发器 (上升沿触发)

设计文件:

module async_rddf(clk, d,q,qb);
input clk, d;
output q,qb;
reg q,qb;
always @(posedge clk) begin
q<=d; qb<=~d;
end
endmodule

仿真文件:

`timescale 1ns / 1ns
module test;
reg clk; reg d;
wire q; wire qb;
async_rddf uut (.clk(clk), .d(d), .q(q), .qb(qb));
initial begin
clk = 0;
d = 0;
#100;
end
always #20 clk=~clk;
always #30 d=~d;
endmodule

仿真波形:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x02 带复位的D触发器

设计文件:

module sync_rddf(clk,reset,d,q,qb);
input clk,reset,d;
output q,qb;
reg q,qb;
always @(posedge clk) begin
if(!reset) begin
q<=0;
qb<=1;
end
else begin
q<=d;
qb<=~d;
end
end
endmodule

仿真文件:

`timescale 1ns / 1ns
module test;
reg clk; reg d;reg reset;
wire q; wire qb;
sync_rddf uut (.reset(reset),.clk(clk), .d(d), .q(q), .qb(qb));
initial begin
clk = 0;
d = 0;
reset = 0;
#100;
end
always #25 reset=~reset;
always #20 clk=~clk;
always #30 d=~d;
endmodule

仿真波形:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x03 同步置位/复位端口的上升沿 D 触发器

设计代码:

module sync_rsddf(clk,reset,set,d,q,qb);
input clk,reset,set;
input d;
output q,qb;
reg q,qb;
always @(posedge clk) begin
if(!set && reset) begin
q<=1;
qb<=0;
end
else if(set && !reset) begin
q<=0;
qb<=1;
end
else begin
q<=d;
qb<=~d;
end
end
endmodule

仿真代码:

`timescale 1ns / 1ns
module test;
reg clk; reg d;reg reset;reg set;
wire q; wire qb;
sync_rsddf uut (.set(set),.reset(reset),.clk(clk), .d(d), .q(q), .qb(qb));
initial begin
clk = 0;
d = 0;
reset = 0;
set = 0;
#100;
end
always #25 reset=~reset;
always #10 set=~set;
always #20 clk=~clk;
always #30 d=~d;
endmodule

仿真波形:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

0x04 异步置位/复位端口的上升沿 D 触发器

设计代码:

module set_D(clk,n_reset,n_set,d,q,qb);
input clk,n_reset,n_set;
input d;
output q,qb;
reg q,qb;
always @(posedge clk or negedge n_reset or negedge n_set) 
  begin
  if(!n_set && n_reset) 
    begin
    q<=1;
    qb<=0;
    end
  else if(n_set && !n_reset) 
    begin
    q<=0;
    qb<=1;
    end
  else 
    begin
    q<=d;
    qb<=~d;
    end
  end
endmodule

仿真代码:

module sim_set_D();
reg clk,n_reset,n_set;
reg d;
wire q,qb;
set_D uu1(clk,n_reset,n_set,d,q,qb);
initial {clk,n_reset,n_set,d}=4&apos;b0000;
always #20 clk=~clk;
always #40 n_reset=~n_reset;
always #80 n_set=~n_set;
always #30 d=~d;
endmodule

仿真波形:

【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位文章来源地址https://www.toymoban.com/news/detail-510410.html

到了这里,关于【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 硬件基础-时序逻辑电路-触发器画波形图问题解析

    本文章可能只适合软件工程专业对于计算机硬件基础。对于专业数电的朋友可能就是小巫见大巫了,笔者才疏学浅,仅供本专业基础课程同学的参考,如有错误希望大佬斧正! 先来看下下面这道题: 试画出图(a)所示电路中触发器输出Q1、Q2端的波形,CLK的波形如图(b)所

    2024年02月02日
    浏览(33)
  • verilog 学习笔记 —— 时序逻辑 Sequential Logics (Latches and Flip-Flops 锁存器和触发器)

    1. D flip-flop D触发器 2. D flip-flop  D触发器 3. DFF with reset  带复位的D触发器  4. 带复位值的D触发器 5. DFF with asynchronous reset 带异步复位功能的 D触发器 6. DFF with byte enable   带位启动的触发器 7. D Latch  D锁存器 8. DFF  9. DFF   10. DFF+gate   11. Mux and DFF   12. DFFs and gates   13

    2024年02月04日
    浏览(44)
  • 北邮22级信通院数电:Verilog-FPGA(9)第九周实验(2)实现下降沿触发的JK触发器(带异步复位和置位功能)

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客   目录 ​编辑 一.代码部分 1.1 JK.v 1.2 JK_tb.v 二.仿真结果

    2024年02月05日
    浏览(37)
  • 【FGPA】Verilog:JK 触发器 | D 触发器 | T 触发器 | D 触发器的实现

    0x00 JK 触发器 JK 触发器是 RS 触发器和 T 触发器的组合,有两个输入端 J 和 K,如果两个输入端都等于 1,则将当前值反转。 行为表

    2024年02月05日
    浏览(36)
  • 北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(1)用JK触发器实现8421码十进制计数器

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1  JK_8421.v 1.2  JK_ff.v 1.3  debounce.v 二.管脚分配 三.实

    2024年02月05日
    浏览(37)
  • Verilog设计实现D触发器与JK触发器

    题目:         用Verilog实现以下电路:                 1. 带复位端的正边沿触发的D触发器;                 2.带复位端的正边沿触发的JK触发器。 包括sys_clk,复位信号sys_rst_n,输入信号key_in以及输出信号led_out; 采用行为级描述: testbench仿真代码编写:

    2024年04月28日
    浏览(68)
  • 数字电路和模拟电路-8触发器

    前言: 掌握锁存器原理及应用 基本SR锁存器 钟控SR锁存器 钟控D锁存器 钟控D锁存器的动态参数 掌握触发器原理及应用 主从触发器 维持阻塞触发器 其它功能的触发器 目录 一、基本SR锁存器 1、双稳态电路(Bistate Elements) 2、由或非门构成的基本SR锁存器 3、由与非门构成的基

    2024年02月04日
    浏览(29)
  • Quartus 实现 D 触发器及时序仿真

    目录 Quartus 实现 D 触发器及时序仿真 一.Quartus 输入原理图及时序仿真 1.创建工程 2.创建方框文件 3.编译原理图文件 4.创建 vwm 格式波形文件 5.时序波形仿真 二.用 Verilog 语言实现 D 触发器及时序仿真 1.编写Verilog 文件 2.查看生成的电路图 3.利用 Verilog 语言编写测试代码实现时序

    2024年02月04日
    浏览(34)
  • Verilog D触发器

    D触发器有数据、时钟和RST输入端以及Q和!Q两个输出端。在每一个时钟的上升沿,输出Q将与输入的D锁存,直到下一个时钟上升沿到来才继续锁存当前的D端数值!Q与Q的输出结果 相反。图1给出了D触发器的符号,图二给出了D触发器的电路,图三给出了D触发器的输入/输出时序

    2024年02月05日
    浏览(31)
  • 时序逻辑基础之D触发器&分频器

    D触发器原理如下 D触发器模拟波形图如下 由图可知Q值不仅与D有关,同时需要考虑到clk上升沿到来后有效 输入一个时钟信号,将输出的信号的时钟周期变为输入信号的时钟周期的N倍,我们将这种器件叫做N分频器。 我们的目的是生成一个N分频器,可以实现任意比例分频。需

    2024年02月06日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包