全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

硬件描述语言(HDL)编码技术:xilinx verilog语法技

时间:2020-12-13 10:29

人气:

作者:admin

标签:

导读:xilinx verilog语法技巧 一 硬件描述语言(HDL)编码技术让您: •描述数字逻辑电路中最常见的功能。 •充分利用Xilinx®器件的架构特性。 1 Flip-Flops and Registers : Vivado综合根据HDL代码的编...

xilinx verilog语法技巧 一

硬件描述语言(HDL)编码技术让您:
•描述数字逻辑电路中最常见的功能。
•充分利用Xilinx®器件的架构特性。

1 Flip-Flops and Registers
Vivado综合根据HDL代码的编写方式推断出四种类型的寄存器原语:
•FDCE:具有时钟使能和异步清除的D触发器
•FDPE:具有时钟使能和异步预设的D触发器
•FDSE:具有时钟使能和同步设置的D触发器
•FDRE:具有时钟使能和同步复位的D触发器

Register with Rising-Edge Coding Example (Verilog)
// 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 else if(ce)
d_reg end

assign dout = d_reg;
endmodule

2 Latches
// 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

3 Shift Registers
移位寄存器是一系列触发器,允许跨固定(静态)数量的延迟级传播数据。 相反,在动态移位寄存器中,传播链的长度在电路操作期间动态变化。
Vivado综合在SRL类资源上实现了推断的移位寄存器,例如:
•SRL16E
•SRLC32E

8-Bit Shift Register Coding Example One (Verilog)
// 8-bit Shift Register
// Rising edge clock
// Active high clock enable
// Concatenation-based template
// File: shift_registers_0.v
module shift_registers_0 (clk, clken, SI, SO);
parameter WIDTH = 32;
input clk, clken, SI;
output SO;
reg [WIDTH-1:0] shreg;
always @(posedge clk)
begin if (clken) shreg assign SO = shreg[WIDTH-1];
endmodule

32-Bit Shift Register Coding Example Two (Verilog)
// 32-bit Shift Register
// Rising edge clock
// Active high clock enable
// For-loop based template
// File: shift_registers_1.v
module shift_registers_1 (clk, clken, SI, SO);
parameter WIDTH = 32;
input clk, clken, SI;
output SO;
reg [WIDTH-1:0] shreg;
integer i;
always @(posedge clk)
begin
if (clken) begin for (i = 0; i end
assign SO = shreg[WIDTH-1];
endmodule

Dynamic Shift Registers
动态移位寄存器是移位寄存器,其长度可在电路操作期间动态变化。
动态移位寄存器可以看作:
•一系列触发器,它们在电路工作期间可以接受的最大长度。
多路复用器,在给定的时钟周期内选择从传播链中提取数据的阶段。

32-Bit Dynamic Shift Registers Coding Example (Verilog)
// 32-bit dynamic shift register.
// Download:
// File: dynamic_shift_registers_1.v
module dynamic_shift_register_1 (CLK, CE, SEL, SI, DO);
parameter SELWIDTH = 5;
input CLK, CE, SI;
input [SELWIDTH-1:0] SEL;
output DO;
localparam DATAWIDTH = 2**SELWIDTH;
reg [DATAWIDTH-1:0] data;
assign DO = data[SEL];
always @(posedge CLK)
begin if (CE == 1'b1) data endmodule

编辑:hfy


温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信