自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sdbzlh的专栏

技术博客,记录心得

  • 博客(51)
  • 收藏
  • 关注

转载 五个级别:系统级、算法级、RTL级、门级、开关级

算法级:主要用于快速验证算法的正确性,不一定可以综合成实际电路结构结构级:更接近电路的实际结构,电路的层次化描述,类似于电路框图RTL级:贴近实际电路结构的描述,描述的细节到寄存器内容传输级别,可以精确描述电路的工作原理、执行顺序,细化到寄存器级别的结构描述也就是RTL级描述,并无绝对划分标准开关级:完整描述了电路的细节,最底层的电路描述,可以描述pmos/nmos

2013-11-26 11:43:32 22449

翻译 占空比

1、50%占空比的好处50% duty cycleclocks are beneficial when you want to clock stuff between rising andfallingedge clock domains as it balances the timing budget between both phases.Notethat moving dat

2013-08-28 10:14:39 2992

原创 chipscope使用tips

1、实现的时候有错误:LUT5 symbol"DelayCntMax_mux00001" (output  signal=DelayCntMax_mux0000) has input signal"DelayCntMax_i" which  will be trimmed. See Section 5 of the Map Report File for details aboutwh

2013-08-28 10:14:31 10389 2

原创 fifo使用tips

1、Program Full Threshold挺有用的,最好认真设置一下。其实就是内部实现了一个比较器,这样可以省去Data count。当然有必要时加上。 设置Program FullThreshold的方法,最简单就是确保一次写入操作能够完成,这样Wr模块就会能够有保障的写入。所以可以设置这里为:总量-一个包的长度(的最大值:如果是变长包的的话)。 2、   FIFO要由

2013-08-28 10:14:16 1005

原创 带COE文件的核的tips

一些内存类核都可以用COE文件来初始化,目前来看,需要注意以下问题:1、拷贝核拷贝的时候,核中记录的COE文件的路径不变。这就意味着,如果考到一台新的电脑上,这里这个路径下面没有这个COE文件,会导致重新配置核的时候报错,然后就会发现核的所有参数都消失了。这样重新配置核比较费劲。 最简单的做法是,现在目标机上建立路径,建立这两个文件,让re-generate核的时候能找到这个文件,

2013-08-28 10:14:09 1168

原创 时钟资源的使用tips

一、IOBank的缓冲资源(不算是时钟资源)所有的信号在输入或者输出的时候,都会被自动加上BUF。这些BUF是在SelectIO中的资源,也即在Bank中的资源。这些资源主要是:IBUF、IBUFG及其差分形式及其输出形式。l  如果使用ISE,那么不需要显式地写出来使用这些资源,会自动使用IBUF或IBUFG。l  IBUFG用且仅用于芯片上的专用时钟管脚GCLK,IBUF用且仅

2013-08-28 10:14:01 1332

原创 pcie block plus使用tips

1、在pcie_blk_plus_ll_rx.v文件中增加:`ifndef TCQ `define TCQ 1`endif2、仿真入口在pci_exp_usrapp_tx.v         initial begin   if ($value$plusargs("TESTNAME=%s", testname))     $display("Running test {

2013-08-28 10:13:51 4309 1

原创 FPGA调试心得

一、基本原则由简入繁:对一个复杂的东西(代码或模块),先研究简单的、笼统的(先读文档,再看例子),最后再进行困难的(自己动手来操作)。反复对比:如果A成功,B不成功。对A和B进行更改,取其公共部分,设计A1,B1来进行对比,找到不同,继而分析问题所在。刨根问底:坚信:这一定是我那里没弄好,不断尝试。多角度地纵深的挖掘。疑难问题更要注意细节,从细节上直接或间接地寻找问题。二、一些技术

2013-08-26 13:15:49 1130

原创 连线心得

连线这个活,说简单简单,说复杂复杂。暂时的连线方法如下:1、例化所有底层模块2、按底层模块从上到下的顺序,按端口从上到下的顺序,将这些端口连接到wire或reg上。注:上层模块没有赋值的端口,一般都是wire。注:可以复制底层模块的声明部分,简化上层模块中需要的reg或wire的声明。 总之,按照由上到下的顺序,这样做会使得信号名称可能不太好(比较理想的信号名称应该是从

2013-08-26 13:14:25 688

原创 模块化设计

一、模块化的设计原因1、硬件复杂,全面的设计非常困难,任务分模块是分工合作的基础。2、人的精力有限,不可能事事躬亲。分模块为必然。二、模块化的设计关键1、模块间的接口接口是模块化是否高效的关键。现在已知的模块接口方案:(1)信号直连:高效,低扩展性(2)用FIFO连接:高扩展性,高延迟(3)Wishbone:类似于总线交换,是靠额外的逻辑来实现的。2、

2013-08-26 13:13:46 1021

原创 灵活与高效

1、灵活的东西不可能高效,高效的东西不可能太灵活为了高效,必须放弃灵活。为了灵活,势必要牺牲高效。2、所以在灵活和性能之间做折衷。3、灵活是为了以后更省事,如果做不到这一点,就不要去做灵活。

2013-08-26 13:13:15 899

原创 ML507的配置

1、配置方法:(1)通过jtag下载程序到FPGA,(使用CPU Rst来使程序运行)或者程序自动复位并运行。(2)通过jtag下载程序到Platform Flash Memory、Linear Flash Memory、SPI Flash Memory中,选择好Mode DIP Switches,使用Prog来配置程序并运行。(3)通过jtag下载程序到flash卡,通过System

2013-08-26 13:12:32 1385

转载 Impact使用

1、impact的目录不一定是当前的目录一定要检查,下到板子里的程序是不是当前目录下的文件。2、set target 是什么意思?3、下到xc32p里的程序后,一定要重启fpga,或者按一下prog键,否则程序肯定不会变化。4、IMPACT里面的set target选项的功能:技术支持回复:HiHu,I think this option is for custom

2013-08-26 13:11:46 1649

原创 full case与parallel case

full caseparallel case作用指示综合器:case里没提到的状态不用管指示综合器:此case无优先级的概念使用这个选项可能的后果如果case不完全,那么仿真器会产生latch,而使用这个选项后综合器综合出来的电路不会有latch。导致仿真和综合结果不一致。如果此case有优先级

2013-08-26 13:07:37 6035

原创 verilog仿真

1、基于分层的事件序列2、仿真开始,所有initial开始工作;所有always被触发一次,并且开始监听。如果两个进程对同一个信号都进行了赋值,那么在仿真时:l  如果该信号为wire,多赋值时会出现X(multi-source)。l  如果该信号为reg,多进程的赋值,会出现这两个进程依次起作用的现象,也即race(竞争)。其结果为仿真器执行的最后一个进程给该信号带来的结果。

2013-08-26 12:57:28 1641

原创 动态可重构

一、1、可重构计算:Reconfigurable computing is intended tofill the gap between hard and soft, achieving potentially muchhigherperformance than software, while maintaining a higher level of flexibilityt

2013-08-26 11:25:10 2163

原创 SliceM与SliceL

李虎:CLB中分为SliceM和SliceL。他们其中都有LUT。SliceM(M是指Memory)和SliceL(L是指Logic)的区别是,SliceM中含有能够把LUT资源重新整合为Ram和Rom的逻辑。这就是所谓的Distributed Ram。   分布式RAM是如何产生的及其与Block RAM的区别- 问 -分布式和Block RAM的

2013-08-26 11:24:33 8024 1

原创 PCIE各种包结构及常用资料汇总

一、Memory Read包本系统中:CPU会发出Read包。1、CPU发过来的包格式   Field NameHeader Byte/BitFunctionLength [9:0]Byte 3 Bit 7:0Byte 2 Bit 1:0单位是DWAttr (

2013-08-26 11:23:11 10252 1

原创 ModelSim仿真注意

1、vlog是编译的工具,有选项:(1)+define+Macro1 +define+Macro2+define+Macro3与使用源文件中的`ifdef`else `endif语句联合起来使用,使在仿真的时候可以执行一些代码。2、vsim是仿真用的工具,有选项:(1)加库-L xilinxcorelib_ver -L unisims_ver -L unimacro_ver -

2013-08-26 11:16:56 1624

转载 搞笑的XORAndOr的解释

一、XORThe truth table for the XOR gate is:ABCTRUETRUEFALSETRUEFALSETRUEFALSETRUETRUEFALSEFALSE

2013-08-26 11:13:00 671

原创 数的表示2

一、数的表示1、POSITIONAL NOTATION就是“权重”的概念2、Additive Notation古罗马计数法,有所有数字加起来表示一个数二、数制转化1、基于的公式(1)Base小的转化为Base大的:在目的Base下展开,在目的Base下做加法x = dk2k+ dk-12k- 1+....+d121+d020可以写作x = d0 + 2(

2013-08-26 11:12:24 795

原创 数的表示1

自然界存在量的关系,数学就是研究的这些规律。这些规律从日常生活中得到,并抽象为数学的基本关系。最基本的关系比如:“1+1=2”。这里1和2就是符号,可以换成其他的任何东西,比如“啊+啊=哦”,仅仅是符号而已。各种数的表示法则仅仅是把数表示成了不同的符号而已。“01+01=10”或者如果你愿意,可以写为“11+11=01”都可以,仅仅是符号罢了。几个符号结合可以生成新的符号,这个过程称之为运算。

2013-08-26 11:12:01 766

原创 状态机

1、状态机最好用时序输出,这样时序性能好。在这种情况下:(1)为了不延时,使用NextState做触发。这样是保证了在输入改变后的上升沿,输出会反映输入的变化。从输入改变到这一个上升沿这个过程是不可避免的,在做状态机时序设计的时候要考虑这一点。(如果是组合输出的话,输入会立即反映到输出上来。但是,决定状态转移的输入还是会延迟到上升沿才起作用,这是因为State这个变量是时序的。如果

2013-08-26 11:06:40 1295

原创 通过地址进行通信的两个模块的通信部分设计技巧

A模块与B模块通过地址进行通信,指:l  A模块为主,B模块为从l  A模块向B模块发送地址+读写使能的指令 设计技巧:1、对于A模块的读:B模块与A模块的read_data这个传输数据的信号,始终根据A模块的地址进行解码,为一个进程或者一个状态机,或者一个组合逻辑。2、对于A模块的写:B模块内部信号是另一个进程,只有当A模块给出写入的时候才写入。 也即:l 

2013-08-26 11:05:41 796

原创 wp231的学习笔记

1、(1)最好不使用复位。(2)如果使用复位,最好是同步复位。异步复位这个功能虽然存在与FPGA中的寄存器上,但是综合后比同步复位浪费逻辑资源。也即:在目前的FPGA中,异步复位的实现的代价是牺牲了一些逻辑。2、(1)复制寄存器,减少扇出系数是一个好方法。复制时加上keep选项仿制被优化掉。复制寄存器的意思:本来是A控制B,B有很多位。现在复制N个A,分别用于控制B

2013-08-26 10:59:08 2319

原创 一定要赋初值

一定要赋初值1、仿真的时候,modelsim不一定会给你初值,很有可能是X状态。对于那种更新时也是读自己的值然后变化的信号,这样子就很有可能一X到底了。2、综合的时候,综合器肯定给你赋初值,但是不一定是什么。 综上所述,一定要赋初值。

2013-08-26 10:58:04 911

转载 VHDL 双向端口

FPGA中双向端口I/O的研究时间:2007-03-07  来源:   作者:莫海永张申科  点击:2178   字体大小:【大中 小】摘要:针对现场可编程门阵列(FPGA)芯片的特点,研究 FPGA 中双向端口I/O的设计,同时给出仿真初始化双向端口I/O的方法。采用这种双向端口的设计方法,选用 Xilinx的Spartan2E 芯片设计一

2013-08-22 10:55:05 5165

原创 信号的属性

信号的属性就是构造了一个新的信号: 详见:VHDL_Attributes_Delay_Model_VHDLSession6_eNotes.pdf

2013-08-22 10:54:32 1208

原创 VHDL配置语句

VHDL配置(Configuration)语句描述层与层之间的连接关系以及实体与构造体之间的对应关系。设计者可以利用这种配置语句来选择不同的构造体,使其与要设计的实体相对应。在仿真某一个实体时,可以利用配置来选择不同的构造体,进行性能对比试验,以得到性能最佳的构造体。最简单的配置语句,结构如下:CONFIGURATION 配置名 OF 实体名 IS       FOR  为实体选配

2013-08-22 10:53:13 5534

原创 VHDL 判决函数

只是判决函数的例子可见:在定义子类型的时候已经定义了其判决函数。

2013-08-22 10:52:41 1721

原创 VHDL 枚举与数组

枚举:type aaa is (‘1’,’0’,’x’,’z’);--单引号表示字符串type aaa is ( a,b,c,d);--没引号表示变量 数组:type aaa is array ( 0 to 800) of std_logic;type aaa is array ( std_logic,std_logic) of std_logic;

2013-08-22 10:51:45 2945

原创 WaitAssertNext

一、next,exit这两个关键词有点类似于C语言中的continue和break.PROCESS(A, B)CONSTANT max_limit : INTEGER := 255;BEGINFOR i IN 0 TO max_limit LOOPIF (done(i) = TRUE) THENNEXT;ELSEdone(i) := TRUE;END IF;

2013-08-22 10:51:11 665

原创 VHDL TEXTIO

TEXTIO•文本输入输出包集合•对文本文件进行读写的过程和函数–定义了line数据类型–定义了文件读写过程文件操作语句•READLINE(文件变量,行变量);•READ(行变量,数据变量);•WRITELINE(文件变量,行变量);•WRITE(行变量,数据变量);•ENDFILE(文件变量);

2013-08-22 10:50:53 1747

原创 VHDL TEXTIO

TEXTIO•文本输入输出包集合•对文本文件进行读写的过程和函数–定义了line数据类型–定义了文件读写过程文件操作语句•READLINE(文件变量,行变量);•READ(行变量,数据变量);•WRITELINE(文件变量,行变量);•WRITE(行变量,数据变量);•ENDFILE(文件变量);

2013-08-22 10:50:11 2121

原创 Guarded Block

2013-08-22 10:49:11 747

原创 93新语法

见VHDL design representation and systhesis_Chinese.pdf的98页

2013-08-22 10:48:33 664

转载 VHDL 93TextIO

在编写testbench时,我们会用到一些VHDL语言,这些语言是我们不常用的,甚至以前没有见过的,但是在testbench中他们却是被经常用到,而且对我们的仿真编写非常有用。今天我们就来简单讲一下常用的几个VHDL句法。一、文件I/O上节讲了,在testbench常将数据写入文件,或者从文件读入数据等,这都需要用到VHDL语言中与文件打交道的语言,即是常说的file I/O.这里强调

2013-08-22 10:47:54 3124

原创 阻塞赋值和非阻塞赋值学习笔记

1、八条指导性规范#1:当为时序逻辑建模,使用“非阻塞赋值”。#2:当为锁存器(latch)建模,使用“非阻塞赋值”。#3:当用always块为组合逻辑建模,使用“阻塞赋值”#4:当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。#5:不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。#6:不要在两个或两个以上always块里面

2013-08-22 10:27:20 891

原创 verilog例化

例化,语法上等价于赋值。 例化可用常数、信号填到小括号里面。 对于输入port,可以用{}来连接多个信号做输入。对于输出port,则不可以,必须用一个信号连接出来,再分别赋值。因为{}可做赋值的右值,但不可做左值。

2013-08-22 10:23:09 5140

原创 Wire与Reg的使用方式测试报告

1、基本测试项语法测试结果说明组合:=(assign/initial/always_with_no_clk) assign用且仅用=,左值用且仅用wireinitial和always左值用且仅用reg,=和都可以,但是一般情况下,组合用=,时序用时序:(always_with_c

2013-08-22 09:56:36 2099

空空如也

空空如也

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

TA关注的人

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