自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 可综合的编码风格

1、工艺无关。选择与工艺无关的方式编写HDL代码。2、时钟相关逻辑。a)时钟逻辑与复位生成应保持在一个模块内。b)避免每个模块具有多个时钟,对于时钟同步问题,应该将同步逻辑单独隔离在一个独立的模块内进行综合。c)时钟命名应该具有实际的意义。d)对于DFT扫描链的插入,要求从原始时钟控制时钟。3、顶层没有粘合逻辑。顶层只用于连接各个模块,不包含任何组合的粘合逻辑。4、模块名与文件名一致。5、不要生成不必要的层次,每个层次设置一个边界。6、寄存所有输出,模块的输出直接从寄存器输出。7、状态机尽量使用

2022-05-14 16:22:37 150

原创 verilog编码中的模块划分建议

准则1.相关的组合逻辑保持在同一模块中2.为设计复用划分3.根据功能分割模块4.结构逻辑与随机逻辑分离5.合理限制模块的大小(依据机器内存的容量)6.划分顶层(I/O压焊块、边界扫描和核心逻辑相分离)7.不要再顶层添加粘合逻辑8.将状态机从其他逻辑中分离出来9.避免一个模块有多个时钟10.分离用于同步多个时钟的模块11.划分时,考率布图风格...

2022-05-14 10:28:13 439

原创 什么是形式验证

定义形式验证技术是使用数学方法来确认一个设计,通过参考设计来检查一个设计的逻辑功能。形式验证与动态仿真之间的区别形式验证是通过证明两个设计的结构与功能是逻辑等价的来验证设计。动态仿真技术只能检查敏感路径,不能找出其他出现的问题。验证目标RTL与RTL,用来确认新的RTL与原来的RTL在功能上是否一致;门级网表与RTL,用来确定DC综合后的逻辑是否正确;门级网表之间,用来确认版图输入信息与版图输出信息。...

2022-05-13 10:54:54 2997

原创 利用RAM产生异步FIFO结构

#原理图其中地址的传输过程中会将二进制变换成格雷码,因为格雷码相邻地址只有一位的差别,避免多位地址传输出现的二进制地址一些位改变而其他位没有改变的问题。

2021-04-01 16:15:37 767

原创 时钟区域

#跨时钟区域时钟可能因为相位的关系产生时序冲突。#亚稳态的产生##解决亚稳态的方法1、相位控制(一个时钟经过PLL或DLL,且两个时钟具有倍数关系)2、双跳技术。双跳技术是一项可以用于两个异步时钟区域之间单比特信号传输技术。3、FIFO结构。在异步时钟之间传递多位信号时可以利用FIFO。4、分割同步模块。优点:首先,每个基本模块的时序分析变得一般,因为模块内是完全同步的;其次,时序在其应用到整个同步模块时特别容易确定;最后,与其相应的时序例外同时同步以较低的由于人为的错误被忽略的概率产生

2021-04-01 15:50:25 264

原创 功耗结构设计

#策略1、时钟控制降低动态功耗。FPGA大部分动态功耗直接与系统时钟的触发有关,所以在设计的非激活区域暂停时钟是这类功耗最小化最直接的方法(使用触发器的时钟使能引脚,或利用全局时钟的多路选择器;不推荐使用时钟选通信号,因为可能产生时钟偏移)。...

2021-04-01 11:36:13 125

原创 面积优化

#策略1、折叠流水线。折叠流水线可以优化在流水线级复制逻辑的流水线设计的面积。2、基于控制的逻辑复用。共享逻辑资源有时要求专门的控制电路来决定哪些元件是到特定结构的输入,当共享逻辑比控制逻辑更大时,控制可以直接用来逻辑复用。3、资源共享。指的是最高层次的结构资源共享,不同的资源在横跨不同的功能范围内共享。对于面积是主要要求的紧促设计,搜索在其他模块中有类似的资源,可以将其放在层次上的全局位置,在多个功能范围之间共享。4、...

2021-04-01 10:32:03 1381

原创 时序改进

#概念时序指的是一个设计的时钟速度。在设计中任何两个时序元件之间的最大延时将决定最大的时钟速度。#改善时序的方法1、添加中间的寄存器层次到关键路径,建议使用在高度流水线的设计。2、并行结构,重新组织关键路径,以致并行地实现逻辑结构。例如,将8位的乘法器分成两个4位的乘法器。3、展平逻辑结构。去除不需要的的特权编码,展平逻辑结构,减少路径延时。4、寄存器平衡。重新分布寄存器之间的逻辑,减少任何两个寄存器之间最坏的延时。建议应用在关键路径和相邻路径之间的逻辑高度不平衡时。因为时钟只能由最坏的路径来决

2021-03-30 22:05:52 342

原创 HDLBits 刷题之我的代码(全)—(Verification:Writing Testbenches)

#1`timescale 1ps/1psmodule top_module ( ); reg clk; initial begin clk = 'b0; forever #5 clk = ~clk; end dut dut1(.clk(clk));endmodule#2`timescale 1ps/1psmodule top_module ( output reg A, output reg B );//

2021-03-28 13:10:19 157

原创 HDLBits 刷题之我的代码(全)—(Verification_Reading Simulations-Build a circuit from a simulation waveform)

#1module top_module ( input a, input b, output q );// assign q = a & b; // Fix meendmodule#2module top_module ( input a, input b, input c, input d, output q );// assign q = ((~a) & (~b) & (~c) &a

2021-03-28 13:09:56 135

原创 HDLBits 刷题之我的代码(全)—(Verification:Reading Simulations-Finding bugs in codes)

#1module top_module ( input sel, input [7:0] a, input [7:0] b, output [7:0] out ); assign out = ({8{sel}} & a) | ({8{~sel}} & b);endmodule#2module top_module (input a, input b, input c, output out);// wire out_reg;

2021-03-28 13:09:15 102

原创 HDLBits 刷题之我的代码(全)—(Circuits-Building Lager Circuits)

#1module top_module ( input clk, input reset, output [9:0] q); always @(posedge clk) begin if(reset == 'd1) begin q <= 'd0; end else begin if(q == 'd999) begin q <= 'd0;

2021-03-28 13:08:52 72

原创 HDLBits 刷题之我的代码(全)—(Circuits-Sequential Logic-Finite State Machines)

#1module top_module ( input clk, input reset, output [9:0] q); always @(posedge clk) begin if(reset == 'd1) begin q <= 'd0; end else begin if(q == 'd999) begin q <= 'd0;

2021-03-28 13:08:27 119

原创 HDLBits 刷题之我的代码(全)—(Circuits-Sequential Logic-More Circuits)

#1module top_module( input clk, input load, input [511:0] data, output [511:0] q ); reg [511:0] q1; always @(posedge clk) begin if(load == 'd1) begin q <= data; end else begin q

2021-03-28 13:08:08 78

原创 HDLBits 刷题之我的代码(全)—(Circuits-Sequential Logic-Shift Registers)

#1module top_module( input clk, input areset, // async active-high reset to zero input load, input ena, input [3:0] data, output reg [3:0] q); always @(posedge clk or posedge areset) begin if(areset) begin

2021-03-28 13:07:37 98

原创 HDLBits 刷题之我的代码(全)—(Circuits-Sequential Logic-Counters)

#1module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always @(posedge clk) begin:counter if(reset == 'd1) begin q <= 'd0; end else begin q &

2021-03-28 13:06:56 102

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-Sequential Logic-Latches and Flip_Flops)

#1module top_module ( input clk, // Clocks are used in sequential circuits input d, output reg q );// always @(posedge clk) begin q <= d; end // Use a clocked always block // copy d to q at every positive edge o

2021-03-28 13:02:26 101

原创 HDLBits 刷题之我的代码(全)—(Circuits-Combinational Logic-Karnaugh Map to Circuits)

#1module top_module( input a, input b, input c, output out ); assign out = a | ((~a) & b) | ((~a) & c);endmodule#2module top_module( input a, input b, input c, input d, output out ); assign out =

2021-03-27 14:00:08 101

原创 HDLBits 刷题之我的代码(全)—(Circuits-Combinational Logic-Arithmetic Circuits)

#1module top_module( input a, b, output cout, sum ); assign {cout,sum} = a + b;endmodule#2module top_module( input a, b, cin, output cout, sum ); assign {cout,sum} = a + b + cin;endmodule#3module top_module( input [2

2021-03-27 13:55:16 90

原创 HDLBits 刷题之我的代码(全)—(Circuits-Combinational Logic-Multiplexers)

#1module top_module( input a, b, sel, output out ); assign out = sel ? b:a;endmodule#2module top_module( input [99:0] a, b, input sel, output [99:0] out ); assign out = sel ? b:a;endmodule#3module top_module( input [

2021-03-27 13:50:16 80

原创 HDLBits 刷题之我的代码(全)—(Circuits-Combinational Logic_Basic Gates)

#1module top_module ( input in, output out); assign out = in;endmodule#2module top_module ( output out); assign out = 1'b0;endmodule#3module top_module ( input in1, input in2, output out); assign out = ~(in1 | in2);e

2021-03-27 13:47:20 132

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-More Verilog Features)

#1module top_module ( input [7:0] a, b, c, d, output [7:0] min);// assign min = (a < b) ? ((a < c) ? (a < d ? a : d):(c < d ? c : d)) : ((b < c) ? (b < d ? b : d):(c < d ? c : d)); // assign intermediate_result1 = comp

2021-03-27 13:38:04 98

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-Procedures)

#1module top_module( input a, input b, output wire out_assign, output reg out_alwaysblock); assign out_assign = a & b; always @(*) begin out_alwaysblock = a & b; endendmodule#2// synthesis verilog_input_version

2021-03-27 13:32:59 118

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-Modules:Hierarchy)

HDLBits 刷题之我的代码(全)—(Verilog Language-Modules:Hierarchy)#1module top_module ( input a, input b, output out ); mod_a u_mod_a( .in1(a), .in2(b), .out(out) );endmodule#2module top_module ( input a, input b,

2021-03-27 13:25:37 108

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-Vectors)

HDLBits 刷题之我的代码(全)—(Verilog Language-Vectors)#1module top_module ( input wire [2:0] vec, output wire [2:0] outv, output wire o2, output wire o1, output wire o0 ); // Module body starts after module declaration assign outv = vec;

2021-03-27 13:16:30 96

原创 HDLBits 刷题之我的代码(全)—(Verilog Language-Basics)

HDLBits 刷题之我的代码(全)—(Verilog Language-Basics)#1module top_module( input in, output out ); assign out = in;endmodule#2module top_module( input a,b,c, output w,x,y,z ); assign w = a; assign x = b; assign y = b; assign z = c;

2021-03-27 13:09:25 68

原创 HDLBits 刷题之我的代码(全)—(Getting started)

HDLBits 刷题之我的代码(全)—(Getting started)#1module top_module( output one );// Insert your code here assign one = 'd1;endmodule#2module top_module( output zero);// Module body starts after semicolon assign zero = 'd0;endmodule...

2021-03-27 12:58:20 88

原创 IC/FPGA面试之任意时钟分频电路的产生

IC/FPGA面试之任意时钟分频电路的产生#题目分析第一步:确定输入输出,输入时钟,复位信号,分频选择信号,输出分频信号。第二步:偶数分频实现通过计数即可。奇数分频,首先产生分频电路,其次使用始终下降沿采样这个信号,最后相与得到结果。#代码module clock_div( input i_clk, input rst_p, input [3:0]div,//0-8 div_clock output o_clk ); wire [3:0] o

2021-03-16 19:39:36 417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除