首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >xilinx verilog语法技巧

xilinx verilog语法技巧

作者头像
FPGA开源工作室
发布2019-10-29 11:54:48
发布2019-10-29 11:54:48
1.2K00
代码可运行
举报
文章被收录于专栏:FPGA开源工作室FPGA开源工作室
运行总次数:0
代码可运行

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)

代码语言:javascript
代码运行次数:0
运行
复制
// 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

2 Latches

代码语言:javascript
代码运行次数:0
运行
复制
// 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)

代码语言:javascript
代码运行次数:0
运行
复制
// 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 <= {shreg[WIDTH-2:0], SI}; end 
assign SO = shreg[WIDTH-1];
endmodule

32-Bit Shift Register Coding Example Two (Verilog)

代码语言:javascript
代码运行次数:0
运行
复制
// 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 < WIDTH-1; i = i+1) shreg[i+1] <= shreg[i]; shreg[0] <= SI; end 
end
assign SO = shreg[WIDTH-1];
endmodule

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

32-Bit Dynamic Shift Registers Coding Example (Verilog)

代码语言:javascript
代码运行次数:0
运行
复制
// 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 <= {data[DATAWIDTH-2:0], SI}; end 
endmodule

verilog常用语法一让您的FPGA设计更轻松

verilog常用语法二让您的FPGA设计更轻松

verilog常用语法三让您的FPGA设计更轻松

xilinx verilog 语法技巧--综合属性

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • xilinx verilog语法技巧 一
    • 1 Flip-Flops and Registers :
    • 2 Latches
    • 3 Shift Registers
    • xilinx verilog 语法技巧--综合属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档