vivado Latches、Tristates、

闩锁

Vivado日志文件报告已识别闩锁的类型和大小。

推断锁存通常是HDL编码错误的结果,例如不完整的if或case声明。

Vivado synthesis针对以下报告示例中显示的实例发出警告。此警告允许您验证推断的Latch功能是否为预期功能。
Latches Reporting Example

* Vivado.log *

WARNING: [Synth 8-327] inferring latch for variable 'Q_reg'

Report Cell Usage:
-----+----+-----
|Cell|Count
-----+----+-----
2 |LD | 1
-----+----+-----

Latch With Positive Gate and Asynchronous Reset
Coding Verilog Example
Filename: latches.v
// Latch with Positive Gate and Asynchronous Reset
// File: latches.v
module latches (
input G,
input D,
input CLR,
output reg Q
);
always @ *
begin
if(CLR)
Q = 0;
else if(G)
Q = D;
end
endmodule
Latch With Positive Gate and Asynchronous Reset
Coding VHDL Example
Filename: latches.vhd
-- Latch with Positive Gate and Asynchronous Reset
-- File: latches.vhd
library ieee;
use ieee.std_logic_1164.all;
entity latches is
port(
G, D, CLR : in std_logic;
Q : out std_logic
);
end latches;
architecture archi of latches is
begin
process(CLR, D, G)
begin
if (CLR = '1') then
Q <= '0';
elsif (G = '1') then
Q <= D;
end if;
end process;
end archi;
•三态缓冲器通常由信号或if-else结构建模。

•这适用于缓冲器驱动板上的内部总线还是外部总线设备所在的位置。

•在if-else的一个分支中,信号被分配了一个高阻抗值。下载编码示例中的编码示例文件。

三态实现

当驱动下列的

•电路的外部引脚(OBUFT)

•内部总线(BUFT):

○ 推断出的BUFT通过Vivado合成自动转换为LUT中实现的逻辑。

○ 当推断BUFT的内部总线驱动顶部模块的输出时,Vivado合成推断出OBUF。

三态报告示例

在合成过程中推断并报告三态缓冲液。

* Vivado log file *

Report Cell Usage:
-----+-----+-----
|Cell |Count
-----+-----+-----
1 |OBUFT| 1
-----+-----+-----

Tristate Description Using Concurrent Assignment Coding Verilog
Example
Filename: tristates_2.v
// Tristate Description Using Concurrent Assignment
// File: tristates_2.v
//
module tristates_2 (T, I, O);
input T, I;
output O;
assign O = (~T) ? I: 1'bZ;
endmodule
Tristate Description Using Combinatorial Process Implemented
with OBUFT Coding VHDL Example
Filename: tristates_1.vhd
-- Tristate Description Using Combinatorial Process
-- Implemented with an OBUFT (IO buffer)
-- File: tristates_1.vhd

library ieee;
use ieee.std_logic_1164.all;
entity tristates_1 is
port(
T : in std_logic;
I : in std_logic;
O : out std_logic
);
end tristates_1;
architecture archi of tristates_1 is
begin
process(I, T)
begin
if (T = '0') then
O <= I;
else
O <= 'Z';
end if;
end process;
end archi;
Tristate Description Using Combinatorial Always Block Coding
Verilog Example
Filename: tristates_1.v
// Tristate Description Using Combinatorial Always Block
// File: tristates_1.v
//
module tristates_1 (T, I, O);
input T, I;
output O;
reg O;
always @(T or I)
begin
if (~T)
O = I;
else
O = 1'bZ;
end
endmodule

相关推荐
崇子嵘7 小时前
4*4按键消抖(野火升腾拓展)
fpga开发
北京青翼科技14 小时前
【PCIE044】基于复旦微 JFM7VX690T 的全国产化 FPGA 开发套件
图像处理·人工智能·fpga开发·信号处理·智能硬件
崇子嵘14 小时前
复杂可乐机(野火升腾拓展)
fpga开发
HAPPY酷15 小时前
DDR 压测与系统验证知识全集
arm开发·驱动开发·fpga开发·硬件架构·硬件工程·dsp开发·基带工程
Aaron158815 小时前
基于FPGA实现卷积方法比较分析
arm开发·算法·fpga开发·硬件架构·硬件工程·射频工程·基带工程
Terasic友晶科技17 小时前
DE10-Nano的HDMI方块移动案例——显示器时序(DMT)标准介绍
fpga开发·计算机外设·hdmi·显示器时序·dmt
search717 小时前
芯片-IP集成
fpga开发
9527华安18 小时前
紫光同创FPGA实现 TCP/IP 协议栈,千兆网服务器版本,提供5套工程源码和技术支持
服务器·tcp/ip·fpga开发
Terasic友晶科技18 小时前
【答疑解惑】如何临时解决带Nios II的FPGA设计在测试时遇到time_limited文件导致elf下载不了的问题
fpga开发·nios ii·quartus lite·opencore plus·time_limited
FPGA_小田老师18 小时前
AXI_DMA IP核实战:24路并行数据高速存储方案
fpga开发·axi_dma·adc采样并行数据存储·高速并行数据存储