• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

三种同步器电路设计Verilog代码VIVADO仿真

08/29 09:25
684
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240919164242W7.doc

共1个文件

名称:三种同步器电路设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

采用行为描述风格完成如下三种同步器电路的设计功能仿真与时序仿真验证。

提交电子版的设计代码和仿真结果,分析功能与时序仿真的差异,并根据仿真结果对电路的功能特点、使用条件等尽量详细地作出分析讨论。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

设计工具:Vivado 2015.4

仿真工具:Vivado 2015.4

功能仿真

时序仿真

程序代码

Testbench

程序编译生成RTL图

功能仿真图

根据功能仿真图,可以看出,该电路功能为同步触发器,输出在输入变化的下一个clock上升沿同步变化。

时序仿真

根据时序仿真图,可以看出,相对功能仿真,时序仿真的输出并不是刚好对应clock的上升沿,而是延迟了5ns左右。

电路功能分析:该电路使用2级D触发器构成同步触发器,用于将一个异步信号转换为同步信号,当reset信号有效时(高电平)输出清零,仿真输出同步信号。可用于异步信号同步输出,和同步复位。

程序代码

Testbench

程序编译生成RTL图

功能仿真

根据功能仿真图,可以看出,该电路功能为不带复位功能的同步触发器,输出在输入变化的第二个clock上升沿同步变化,输出相对于第一个电路图延迟了1个clock周期。

时序仿真

根据时序仿真图,可以看出,时序仿真的输出并不是刚好对应clock的上升沿,而是延迟了5ns左右,这是因为时序仿真是添加了器件内部的实际电路延迟。

电路功能分析:该电路第一个触发器以异步输入Asynch_in作为时钟,VCC作为触发器输入,复位信号内部生成,后两个触发器为不带复位功能的同步D触发器。

当Asynch_in为高电平时,系统输出高电平;低当Asynch_in为低电平时输出为低,通过后两个D触发器后返回第一个的复位信号,使第一个触发器复位。可用于不带复位功能的异步信号同步,且同步信号延迟2个时钟周期。

功能仿真

根据功能仿真图,可以看出,该电路功能为带复位功能的同步触发器,输出在输入变化的第二个clock上升沿同步变化,输出相对于第一个电路图延迟了1个clock周期。当复位信号有效时(高电平)输出保持为0,不随输入变化。

时序仿真

根据时序仿真图,可以看出,时序仿真的输出并不是刚好对应clock的上升沿,而是延迟了5ns左右,这是因为时序仿真是添加了器件内部的实际电路延迟。

电路功能分析:该电路第一个触发器以异步输入Asynch_in作为时钟,VCC作为触发器输入,复位信号是内部生成和外部输入reset信号的或,该电路相对于上一个电路增加了复位功能。可用于带复位功能的异步信号同步,且同步信号延迟2个时钟周期。

部分代码展示:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2019/04/01 20:31:39
// Design Name: 
// Module Name: Synchron_1
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////
module Synchron_1(
    input Asynch_in,
    input clock,
    input reset,
    output reg Synch_out
    );
reg Q=0;
always@(posedge clock or posedge reset)
    if(reset)
        Q<=0;
    else
        Q<=Asynch_in;
        
always@(posedge clock or posedge reset)
    if(reset)
        Synch_out<=0;
    else
        Synch_out<=Q;       
endmodule

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1100

  • 2-240919164242W7.doc
    下载

相关推荐