vivado HDL编码技术

HDL编码技术

介绍

硬件描述语言(HDL)编码技术使您能够:

•描述数字逻辑电路中最常见的功能。

•充分利用AMD设备的体系结构功能。

•模板可从AMD Vivado™设计套件集成设计环境中获得(侧面)。要访问模板,请在“窗口”菜单中,选择“语言模板”。本章包括编码示例。从“coding”下载编码示例文件示例。

VHDL的优点

•实施更严格的规则,特别是强类型、不太宽容和容易出错的规则

•HDL源代码中RAM组件的初始化更容易(Verilog初始块不太方便)

•一揽子支持

•自定义类型

•列举的类型

•无reg与wire混淆

Verilog的优势

•类似C的语法

•更紧凑的代码

•阻止评论

•没有VHDL中的重型组件实例化SystemVerilog的优势

•与Verilog相比,代码更加紧凑

•结构和枚举类型可实现更好的可扩展性

•用于更高抽象级别的接口

•支持Vivado合成

触发器、寄存器和锁存器

Vivado合成识别触发器,寄存器具有以下控制信号:

•上升沿或下降沿时钟

•异步设置/重置

•同步设置/重置

•时钟启用

触发器、寄存器和锁存器描述如下:

•顺序过程(VHDL)

•始终阻止(Verilog)

•触发器的always_ff,锁存器的always_lock(SystemVerilog)

进程或总是阻止敏感度列表应列出:

•时钟信号

•所有异步控制信号

触发器和寄存器控制信号

触发器和寄存器控制信号包括:

•时钟

•异步和同步设置和重置信号

•时钟启用

编码指南

•不要异步设置或重置寄存器。

○ 控制集重新映射变得不可能。

○ 设备资源中的顺序功能,如块RAM组件和DSP块,只能同步设置或重置。

○ 如果使用异步设置或重置寄存器,则无法利用设备资源或被配置为次优。

•不要描述同时具有设置和重置功能的触发器。

○ 没有触发器基元同时具有设置和重置功能,无论是同步的还是异步。

○ 同时具有设置和重置功能的触发器基元可能会对区域和表演

•尽可能避免操作设置/重置逻辑。还有其他更便宜的方法以实现所需的效果,例如通过定义来利用电路全局重置初始内容。

•始终将触发器基元的时钟启用、设置和重置控制输入描述为活动高电平。

如果它们被描述为有效低,则产生的反相器逻辑惩罚电路表演

触发器和寄存器推理

Vivado综合根据HDL代码的方式推断出四种类型的寄存器基元书面的

•FDCE:D触发器,带时钟启用和异步清除

•FDPE:D触发器,带时钟启用和异步预设

•FDSE:D触发器,带时钟启用和同步设置

•FDRE:D触发器,带时钟启用和同步复位

触发器和寄存器初始化

要在电路通电时初始化寄存器的内容,请指定信号的默认值在申报期间。

触发器和寄存器报告

•在HDL合成过程中推断并报告寄存器。

•HDL合成过程中推断出的寄存器数量可能不完全等于该数量

“设计摘要”部分中的触发器基元的。

•“触发器”基元的数量取决于以下过程:

○ 将寄存器吸收到DSP块或块RAM组件中

○ 寄存器重复

○ 移除常量或等效触发器

触发器和寄存器报告示例

----------------------------------------------------------------------------
-----
RTL Component Statistics
----------------------------------------------------------------------------
-----
Detailed RTL Component Info :
+---Registers :
8 Bit Registers := 1
Report Cell Usage:
-----+----+-----
|Cell|Count
-----+----+-----
3 |FDCE| 8
-----+----+-----

触发器和寄存器编码示例

以下小节提供了触发器和寄存器。从编码示例下载编码示例文件。

使用Rising Edge编码注册Verilog示例

文件名:registers_1.v

// 8-bit Register with
// Rising-edge Clock
// Active-high Synchronous Clear
// Active-high Clock Enable
// File: registers_1.v
module registers_1(d_in,ce,clk,clr,dout);
input [7:0] d_in;
input ce;
input clk;
input clr;
output [7:0] dout;
reg [7:0] d_reg;
always @ (posedge clk)
begin
if(clr)
d_reg <= 8'b0;
else if(ce)
d_reg <= d_in;
end
assign dout = d_reg;
endmodule

具有上升沿时钟编码的触发器寄存器VHDL示例

文件名:registers_1.vhd

-- Flip-Flop with
-- Rising-edge Clock
-- Active-high Synchronous Clear
-- Active-high Clock Enable
-- File: registers_1.vhd
library IEEE;
use IEEE.std_logic_1164.all;
entity registers_1 is
port(
clr, ce, clk : in std_logic;
d_in : in std_logic_vector(7 downto 0);
dout : out std_logic_vector(7 downto 0)
);
end entity registers_1;
architecture rtl of registers_1 is
begin
process(clk) is
begin
if rising_edge(clk) then
if clr = '1' then
dout <= "00000000";
elsif ce = '1' then
dout <= d_in;
end if;
end if;
end process;
end architecture rtl;

你可能感兴趣的:(fpga开发)