




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计开课学期: 2013-2014学年第一学期 课程名称: 集成电路综合课程设计 学 院: 专 业: 班 级: 学 号: 姓 名: 任课教师: 2013 年 9 月 11 日 一、课程设计目的3二、设计要求33三、设计基本原理3四、设计设计分析4五,设计实现过程5A.电路设计5B.综合过程5C.结果8五.总结及感想9附件:23设计目的利用verilogHDL设计数字电路异步FIFO,通过对verilogHDL的学习,掌握一些基本的知识,本次课程设计的安排旨在提升学生的动手能力,加强大家对专业理论知识的理解和实际运用,加强大家的自学能力,为大家做毕业设计做很好的铺垫。设计要求遵循RTL设计规则,利用VerilogHDL设计数字电路异步FIFO.异步FIFO具有读写两个时钟,读时钟100MHz,写时钟50MHz。RTL为可综合设计,需要考虑不同时钟领域的同步设计,具有空满标志产生逻辑,并且根据空满标志进行读写数据及读写使能等逻辑控制。根据RTL设计,编写验证环境,即testbench,在testbench中测试异步FIFO的读写功能是否正确。异步FIFO写数据由testbench产生。编写一定的测试向量,来测试覆盖所设计的异步FIFO各项功能及指标。将异步FIFORTL在DC环境中进行综合,编写约束文件,给出最终的综合结果,包括面积报告,网表及时序报告。约束文件中,读写时钟要求见上,输入延迟为写时钟周期的一半,输出延迟为读时钟周期的1/3,其他约束要求根据RTL设计自己确定。设计基本原理从硬件的观点来看,就是一块数据内存。它有两个端口,一个用来写数据,就是将数据存入FIFO;另一个用来读数据,也就是将数据从FIFO当中取出。与FIFO操作相关的有两个指针,写指针指向要写的内存部分,读指针指向要读的内存部分。FIFO控制器通过外部的读写信号控制这两个指针移动,并由此产生FIFO空信号或满信号。对于异步FIFO而言,数据是由某一个时钟域的控制信号写入FIFO,而由另一个时钟域的控制信号将数据读出FIFO。也就是说,读写指针的变化动作是由不同的时钟产生的。因此,对FIFO空或满的判断是跨时钟域的。如何根据异步的指针信号对FIFO的满状态或空状态进行正确的判断。设计分析在数字集成电路中,触发器要满足setup/hold的时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端的值是不确定的,并且 在未知的时刻会固定到高电平或低电平。这个过程称为亚稳态(Metastability)。图2所示为异步时钟和亚稳态,图中clka和clkb为异步时 钟。对写地址/读地址采用格雷码。由实践可知,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对多个触发器的输出所组成的写地址/读地址可以采用格雷码。由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态的产生。 2.2 空/满标志的产生空/满标志的产生FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。空/ 满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地 址的时候,满标志应该有效,表示此时FIFO已满,外部电路应对FIFO发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。同理,空 标志的产生也是如此,即:空标志=(|写地址-读地址|=预定值)AND(写地址超前读地址)满标志=(|写地址-读地址|=预定值)AND(读地址超前写地址)设计实现过程五、设计实现过程A、电路实现过程 附图 1 由异步FIFO内部模块图和接口信号(附图1)可以知道,因为是两个异步的时钟,所以用锁存器来避免产生亚稳态。为了生成空满标志,我们采用格雷码来编写。我们可以看出FIFO中的读写指针是一个循环指针,读写指针初始化值都为0,满标志初始化为0,空标志初始化值为1.读写操作开始的时候,每做一次写操作,写指针加1,每做一次读操作,读指针也加1,。当读指针在加1过程中与写指针相等的时候,表示缓冲区为空,应置空标志。反之,写指针加1过程中等于读指针,缓冲区满,应置满标志。 经上面的分析,结合格雷码的特点,我们可以将满标志定义如下: overflow=(wptrnrptrn-1)&(wptrn-1rptrn 我们可以将空标志定义如下: underflow=(wptrnrptrn-1&(wptrn-1rptrn)分析后根据RTL设计的规则来编写代码如下所示:/asyn fifotimescale 1ns/1nsmodule fifo (wdata,full,winc,wclk,wrst_n,rdata,rinc,empty,rclk,rrst_n);/-parameterWIDTH = 8;parameter DEPTH = 2;parametermax_count = 2b11;/-inputWIDTH:0wdata;inputwinc;inputwclk;inputwrst_n;inputrinc;inputrclk;inputrrst_n;/-outputfull;outputWIDTH:0rdata;outputempty;/-regfull_r;regempty_r;regWIDTH:0rdata_r;/-regDEPTH:0wptr; /n+1 ptrregDEPTH:0rptr;regDEPTH:0w1_rptr;regDEPTH:0w2_rptr;regDEPTH:0r1_wptr;regDEPTH:0r2_wptr;/-reg(WIDTH-1):0fifomem 0:max_count;regDEPTH:0wbin,rbin;wireDEPTH:0rgnext,rbnext,wgnext,wbnext;regDEPTH:0 rgnext_r,rbnext_r;wire(DEPTH-1):0raddr,waddr;/reg(DEPTH-1):0raddr_r;wirefull_val,empty_val;/-/write inalways(posedge wclk)beginif(!winc&!full)/write enable no fullfifomemwaddr = wdata;end/read outalways(posedge rclk)beginif(!rinc&!empty)rdata_r = fifomemraddr;end/-/asyn write ptralways(posedge wclk or negedge wrst_n)beginif(!wrst_n)w2_rptr,w1_rptr = 2b00;elsew2_rptr,w1_rptr = w1_rptr,rptr;end/-/generate wptr and wbinalways(posedge wclk or negedge wrst_n)beginif(!wrst_n)wbin,wptr = 2b00;elsewbin,wptr 1) wbnext;assign full_val = (wgnext = w2_rptrDEPTH,w2_rptr(DEPTH-1):0);always(posedge wclk or negedge wrst_n)beginif(!wrst_n)full_r = 1b0;elsefull_r = full_val;end/asyn read ptr -always(posedge rclk or negedge rrst_n)beginif(!rrst_n)r2_wptr,r1_wptr = 2b00;elser2_wptr,r1_wptr = r1_wptr,wptr;end/-/generate rbin and rptralways(posedge rclk or negedge rrst_n)beginif(!rrst_n)rbin,rptr = 2b00;elserbin,rptr 1) rbnext;assignempty_val = (rgnext_r = r2_wptr);always(posedge rclk or negedge rrst_n)beginif(!rrst_n)empty_r = 1b0;elseempty_r = empty_val;end/-assignfull = full_r;assignempty = empty_r;assignrdata = rdata_r;/assign rgnext = rgnext_r;always (posedge rclk )beginrgnext_r = rgnext;rbnext_r = rbnext;/raddr_r ./fifo_test.area_rptreport_timing fifo_test.timing.rptreport_constraint -all_violators fifo_test.constraint_rpt#gui_start#report#report_timing结果系统功能仿真波形:时序仿真波形:总结及感想虽然该设计用了差不多两个星期的时间,虽然效率不高,但也对学到了不少东西。对同步异步信号有了较深的理解,以及怎样通过看RTL和描述语言作对比,找出问题的所在,此方法对于小的设计及有帮助。同时也让我积累了一些经验,比如在设计之前还查找相关的资料,了解该方面设计目前的大体情况。整理好设计方案、思想等。这样能在很大程度上提高设计效率。附件:门级网表:module fifo ( wdata, full, winc, wclk, wrst_n, rdata, rinc, empty, rclk, rrst_n ); input 8:0 wdata; output 8:0 rdata; input winc, wclk, wrst_n, rinc, rclk, rrst_n; output full, empty; wire N5, N6, fifomem07 , fifomem06 , fifomem05 , fifomem04 , fifomem03 , fifomem02 , fifomem01 , fifomem00 , fifomem17 , fifomem16 , fifomem15 , fifomem14 , fifomem13 , fifomem12 , fifomem11 , fifomem10 , fifomem27 , fifomem26 , fifomem25 , fifomem24 , fifomem23 , fifomem22 , fifomem21 , fifomem20 , fifomem37 , fifomem36 , fifomem35 , fifomem34 , fifomem33 , fifomem32 , fifomem31 , fifomem30 , N14, N15, N16, N17, N18, N19, N20, N21, w2_rptr2 , full_val, rbin2 , empty_val, n10, n20, n23, n26, n29, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58, n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71, n72, n73, n74, n75, n76, n77, n78, n79, n80, n81, n82, n83, n84, n85, n86, n87, n88, n89, n96, n97, n98, n99, n100, n101, n102, n103, n104, n105, n106, n107, n108, n109, n110, n111, n112, n113, n114, n115, n116, n117, n118, n119, n120, n121, n122, n123, n124, n125, n126, n127, dp_cluster_0/N34 , N32, dp_cluster_1/N36 , N31, n128, n129, n130, n131, n132, n133, n134, n135, n136, n137, n138, n139, n140, n141, n142, n143, n144, n145, n146, n147, n148, n149, n150, n151, n152, n153, n154, n155, n156, n157, n158, n159, n160, n161, n162, n163, n164, n165, n166, n167, n168, n169, n170, n171, n172, n173, n174, n175, n176, n177, n178, n179, n180, n181, n182, n183, n184, n185, n186, n187, n188, n189, n190, n191, n192, n193; wire 2:0 w1_rptr; wire 2:0 rptr; wire 2:0 wbnext; wire 1:0 wgnext; wire 2:0 wptr; wire 2:0 wbin; wire 2:0 r1_wptr; wire 1:0 rbnext_r; wire 2:0 rgnext_r; wire 2:0 rbnext; wire 2:0 rgnext; assign rdata8 = 1b0; FD2 wptr_reg2 ( .D(wbnext2), .CP(wclk), .CD(wrst_n), .Q(wptr2) ); FD2 wptr_reg1 ( .D(wgnext1), .CP(wclk), .CD(wrst_n), .Q(wptr1) ); FD2 wptr_reg0 ( .D(wgnext0), .CP(wclk), .CD(wrst_n), .Q(wptr0) ); FD2 wbin_reg2 ( .D(wbnext2), .CP(wclk), .CD(wrst_n), .Q(wbin2) ); FD2 r1_wptr_reg2 ( .D(wptr2), .CP(rclk), .CD(rrst_n), .Q(r1_wptr2) ); FD2 r1_wptr_reg1 ( .D(wptr1), .CP(rclk), .CD(rrst_n), .Q(r1_wptr1) ); FD2 r1_wptr_reg0 ( .D(wptr0), .CP(rclk), .CD(rrst_n), .Q(r1_wptr0) ); FD2 r2_wptr_reg2 ( .D(r1_wptr2), .CP(rclk), .CD(rrst_n), .QN(n38) ); FD2 r2_wptr_reg1 ( .D(r1_wptr1), .CP(rclk), .CD(rrst_n), .QN(n39) ); FD2 r2_wptr_reg0 ( .D(r1_wptr0), .CP(rclk), .CD(rrst_n), .QN(n37) ); FD1 rbnext_r_reg2 ( .D(rbnext2), .CP(rclk), .Q(rgnext2) ); FD1 rgnext_r_reg2 ( .D(rgnext2), .CP(rclk), .Q(rgnext_r2) ); FD2 rptr_reg2 ( .D(rgnext_r2), .CP(rclk), .CD(rrst_n), .Q(rptr2) ); FD2 w1_rptr_reg2 ( .D(rptr2), .CP(wclk), .CD(wrst_n), .Q(w1_rptr2) ); FD2 w2_rptr_reg2 ( .D(w1_rptr2), .CP(wclk), .CD(wrst_n), .Q( w2_rptr2 ) ); FD2 rbin_reg2 ( .D(rgnext2), .CP(rclk), .CD(rrst_n), .Q(rbin2 ) ); FD1 rbnext_r_reg1 ( .D(rbnext1), .CP(rclk), .Q(rbnext_r1) ); FD2 rbin_reg1 ( .D(rbnext_r1), .CP(rclk), .CD(rrst_n), .Q(N6), .QN( n163) ); FD1 rgnext_r_reg1 ( .D(rgnext1), .CP(rclk), .Q(rgnext_r1) ); FD2 rptr_reg1 ( .D(rgnext_r1), .CP(rclk), .CD(rrst_n), .Q(rptr1) ); FD2 w1_rptr_reg1 ( .D(rptr1), .CP(wclk), .CD(wrst_n), .Q(w1_rptr1) ); FD2 w2_rptr_reg1 ( .D(w1_rptr1), .CP(wclk), .CD(wrst_n), .QN(n40) ); FD1 rbnext_r_reg0 ( .D(rbnext0), .CP(rclk), .Q(rbnext_r0) ); FD2 rbin_reg0 ( .D(rbnext_r0), .CP(rclk), .CD(rrst_n), .Q(N5), .QN( n178) ); FD1 rgnext_r_reg0 ( .D(rgnext0), .CP(rclk), .Q(rgnext_r0) ); FD2 rptr_reg0 ( .D(rgnext_r0), .CP(rclk), .CD(rrst_n), .Q(rptr0) ); FD2 w1_rptr_reg0 ( .D(rptr0), .CP(wclk), .CD(wrst_n), .Q(w1_rptr0) ); FD2 w2_rptr_reg0 ( .D(w1_rptr0), .CP(wclk), .CD(wrst_n), .QN(n41) ); FD1 fifomem_reg07 ( .D(n96), .CP(wclk), .Q(fifomem07 ), .QN(n73) ); FD1 fifomem_reg06 ( .D(n97), .CP(wclk), .Q(fifomem06 ), .QN(n72) ); FD1 fifomem_reg05 ( .D(n98), .CP(wclk), .Q(fifomem05 ), .QN(n71) ); FD1 fifomem_reg04 ( .D(n99), .CP(wclk), .Q(fifomem04 ), .QN(n70) ); FD1 fifomem_reg03 ( .D(n100), .CP(wclk), .Q(fifomem03 ), .QN(n69) ); FD1 fifomem_reg02 ( .D(n101), .CP(wclk), .Q(fifomem02 ), .QN(n68) ); FD1 fifomem_reg01 ( .D(n102), .CP(wclk), .Q(fifomem01 ), .QN(n67) ); FD1 fifomem_reg00 ( .D(n103), .CP(wclk), .Q(fifomem00 ), .QN(n66) ); FD1 fifomem_reg17 ( .D(n104), .CP(wclk), .Q(fifomem17 ), .QN(n65) ); FD1 fifomem_reg16 ( .D(n105), .CP(wclk), .Q(fifomem16 ), .QN(n64) ); FD1 fifomem_reg15 ( .D(n106), .CP(wclk), .Q(fifomem15 ), .QN(n63) ); FD1 fifomem_reg14 ( .D(n107), .CP(wclk), .Q(fifomem14 ), .QN(n62) ); FD1 fifomem_reg13 ( .D(n108), .CP(wclk), .Q(fifomem13 ), .QN(n61) ); FD1 fifomem_reg12 ( .D(n109), .CP(wclk), .Q(fifomem12 ), .QN(n60) ); FD1 fifomem_reg11 ( .D(n110), .CP(wclk), .Q(fifomem11 ), .QN(n59) ); FD1 fifomem_reg10 ( .D(n111), .CP(wclk), .Q(fifomem10 ), .QN(n58) ); FD1 fifomem_reg27 ( .D(n112), .CP(wclk), .Q(fifomem27 ), .QN(n57) ); FD1 fifomem_reg26 ( .D(n113), .CP(wclk), .Q(fifomem26 ), .QN(n56) ); FD1 fifomem_reg25 ( .D(n114), .CP(wclk), .Q(fifomem25 ), .QN(n55) ); FD1 fifomem_reg24 ( .D(n115), .CP(wclk), .Q(fifomem24 ), .QN(n54) ); FD1 fifomem_reg23 ( .D(n116), .CP(wclk), .Q(fifomem23 ), .QN(n53) ); FD1 fifomem_reg22 ( .D(n117), .CP(wclk), .Q(fifomem22 ), .QN(n52) ); FD1 fifomem_reg21 ( .D(n118), .CP(wclk), .Q(fifomem21 ), .QN(n51) ); FD1 fifomem_reg20 ( .D(n119), .CP(wclk), .Q(fifomem20 ), .QN(n50) ); FD1 fifomem_reg37 ( .D(n120), .CP(wclk), .Q(fifomem37 ), .QN(n49) ); FD1 fifomem_reg36 ( .D(n121), .CP(wclk), .Q(fifomem36 ), .QN(n48) ); FD1 fifomem_reg35 ( .D(n122), .CP(wclk), .Q(fifomem35 ), .QN(n47) ); FD1 fifomem_reg34 ( .D(n123), .CP(wclk), .Q(fifomem34 ), .QN(n46) ); FD1 fifomem_reg33 ( .D(n124), .CP(wclk), .Q(fifomem33 ), .QN(n45) ); FD1 fifomem_reg32 ( .D(n125), .CP(wclk), .Q(fifomem32 ), .QN(n44) ); FD1 fifomem_reg31 ( .D(n126), .CP(wclk), .Q(fifomem31 ), .QN(n43) ); FD1 fifomem_reg30 ( .D(n127), .CP(wclk), .Q(fifomem30 ), .QN(n42) ); FD2 empty_r_reg ( .D(empty_val), .CP(rclk), .CD(rrst_n), .Q(empty), .QN( dp_cluster_1/N36 ) ); FD1 rdata_r_reg0 ( .D(n89), .CP(rclk), .Q(rdata0), .QN(n74) ); FD1 rdata_r_reg1 ( .D(n88), .CP(rclk), .Q(rdata1), .QN(n75) ); FD1 rdata_r_reg2 ( .D(n87), .CP(rclk), .Q(rdata2), .QN(n76) ); FD1 rdata_r_reg3 ( .D(n86), .CP(rclk), .Q(rdata3), .QN(n77) ); FD1 rdata_r_reg4 ( .D(n85), .CP(rclk), .Q(rdata4), .QN(n78) ); FD1 rdata_r_reg5 ( .D(n84), .CP(rclk), .Q(rdata5), .QN(n79) ); FD1 rdata_r_reg6 ( .D(n83), .CP(rclk), .Q(rdata6), .QN(n80) ); FD1 rdata_r_reg7 ( .D(n82), .CP(rclk), .Q(rdata7), .QN(n81) ); OR2 U68 ( .A(full), .B(winc), .Z(n20) ); AN3 U69 ( .A(n31), .B(n32), .C(n33), .Z(full_val) ); AN3 U75 ( .A(n34), .B(n35), .C(n36), .Z(empty_val) ); EOI U3 ( .A(rgnext2), .B(rbnext_r1), .Z(rgnext1) ); EOI U4 ( .A(rbnext_r1), .B(rbnext_r0), .Z(rgnext0) ); EOI U70 ( .A(wgnext1), .B(n40), .Z(n33) ); EOI U71 ( .A(wbnext2), .B(wbnext1), .Z(wgnext1) ); EOI U72 ( .A(wbnext2), .B(w2_rptr2 ), .Z(n32) ); EOI U73 ( .A(wgnext0), .B(n41), .Z(n31) ); EOI U74 ( .A(wbnext0), .B(wbnext1), .Z(wgnext0) ); EOI U76 ( .A(rgnext_r2), .B(n38), .Z(n36) ); EOI U77 ( .A(rgnext_r1), .B(n39), .Z(n35) ); EOI U78 ( .A(rgnext_r0), .B(n37), .Z(n34) ); FD2 wbin_reg1 ( .D(wbnext1), .CP(wclk), .CD(wrst_n), .Q(wbin1), .QN( n188) ); FD2 wbin_reg0 ( .D(wbnext0), .CP(wclk), .CD(wrst_n), .Q(wbin0), .QN( n189) ); FD2 full_r_reg ( .D(full_val), .CP(wclk), .CD(wrst_n), .Q(full), .QN( dp_cluster_0/N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八中自主招生考试题及答案
- 解析卷公务员考试《常识》同步练习试题(含答案及解析)
- 护理查对制度试题(含答案)
- 贵州企业招聘:2025贵州黔晨综合发展有限公司招聘15人考前自测高频考点模拟试题及完整答案详解1套
- 2025年在线职业技能认证平台投资风险评估分析报告
- 2025年文化娱乐产业产业链重构与协同发展报告
- 2025年婴幼儿配方食品营养配方研究进展与挑战分析报告
- 2025年城市慢行系统建设与城市交通拥堵治理创新策略可行性研究报告
- 2025年教育行业质量评估与认证体系在学校特色教育中的应用报告
- 2025年海洋生态修复政策与海洋生物保护研究报告
- 产教融合育人协同创新模式
- 卷帘门维修合同
- XX区烟草公司面向社会招聘工作人员政审表【模板】
- 工商变更登记代理合同
- 矿山支护工安全培训课件
- 2020输变电工程通用设计35~110kV输电线路站分册
- 软件管理系统产品报价单模板(详细)
- 教学设备安装调试方案投标方案
- 中建350吨履带吊安装、拆除安全专项方案
- 医院诊断证明书word模板
- 汕头市房地产租赁合同
评论
0/150
提交评论