freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于veriloghdl的異步fifo設(shè)計(jì)畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-06-19 12:40本頁(yè)面
  

【正文】 (讀時(shí)鐘域產(chǎn)生,異步于寫(xiě)時(shí)鐘域)的增加,所以要把異步信號(hào)full同步到讀時(shí)鐘域產(chǎn)生wfull信號(hào)。當(dāng)full/empty信號(hào)有效時(shí),wfull/rempty會(huì)立即變?yōu)橛行В?dāng)full/empty信號(hào)由有效變?yōu)闊o(wú)效時(shí),可以看出wfull/rempty要進(jìn)經(jīng)過(guò)2個(gè)周期的延時(shí)才從有效變?yōu)闊o(wú)效,把這種空滿標(biāo)志稱作保守空滿標(biāo)志,但是不會(huì)影響FIFO的性能。 仿真驗(yàn)證根據(jù)以上分析,以深度為1數(shù)據(jù)寬度為8位的異步FIFO為例,用Verilog HDL編寫(xiě)了各個(gè)模塊,并采用Mentor公司的仿真工具M(jìn)odelsim SE 。設(shè)寫(xiě)時(shí)鐘(wclk)周期為100MHz,讀時(shí)鐘(rclk)周期為 133MHz,F(xiàn)IFO寫(xiě)、讀時(shí)序仿真結(jié)果分別下圖48所示。當(dāng)FIFO寫(xiě)滿時(shí),滿標(biāo)志wfull馬上由0變1,禁止寫(xiě)數(shù)據(jù)并且寫(xiě)地址也不再增加, FIFO只讀不寫(xiě);當(dāng)FIFO讀空時(shí),空標(biāo)志rempty馬上由0變1,禁止讀數(shù)據(jù)并且讀地址也不再增加,F(xiàn)IFO只寫(xiě)不讀。空/滿信號(hào)的變化情況滿足設(shè)計(jì)要求。圖48 仿真圖形5 總結(jié) 異步FIFO設(shè)計(jì)的總結(jié)本文討論了一種異步FIFO的設(shè)計(jì)方法,應(yīng)用Verilog HDL語(yǔ)言采用自頂向下的設(shè)計(jì)方法實(shí)現(xiàn)了FIFO的數(shù)據(jù)緩沖功能。它有四種FIFO態(tài)。經(jīng)驗(yàn)證,該異步FIFO能夠安全的實(shí)現(xiàn)數(shù)據(jù)的跨時(shí)鐘域傳遞有數(shù)據(jù)緩沖作用,可以應(yīng)用到URAT(通用異步收發(fā)器),SPI(服務(wù)提供商接口)等通訊外設(shè)中。 設(shè)計(jì)方法的不足之處本文的異步FIFO設(shè)計(jì)使用格雷碼降低了亞穩(wěn)態(tài)的產(chǎn)生,但是還沒(méi)有完全消除,所以從設(shè)計(jì)上來(lái)說(shuō)還沒(méi)有滿足要求,所以還需要改進(jìn)。如果在設(shè)計(jì)跨不同時(shí)鐘域電路時(shí),使用一些技術(shù)來(lái)降低通信失敗的風(fēng)險(xiǎn),則處理跨時(shí)鐘域的信號(hào)就不再是艱巨的任務(wù)。同步機(jī)制可以防止接收跨時(shí)鐘域信號(hào)的觸發(fā)器出現(xiàn)亞穩(wěn)態(tài),從而避免導(dǎo)致不可預(yù)知的電路行為。對(duì)于在多個(gè)時(shí)鐘周期內(nèi)一直保持有效的信號(hào)來(lái)說(shuō),電平同步器的效果很好。對(duì)于要轉(zhuǎn)換成新時(shí)鐘域脈沖的較慢時(shí)鐘域電平信號(hào),要采用邊沿檢測(cè)同步器。最后,對(duì)跨時(shí)鐘域的脈沖信號(hào)應(yīng)使用脈沖同步器。而且,當(dāng)一個(gè)信號(hào)總線跨越時(shí)鐘域時(shí),整個(gè)總線要在同一個(gè)時(shí)鐘周期內(nèi)到達(dá)新的時(shí)鐘域。不要分別同步每一個(gè)信號(hào),而要采用一個(gè)保持寄存器和握手方式。握手用來(lái)表示寄存器中的信號(hào)何時(shí)有效,何時(shí)可以采樣。對(duì)數(shù)據(jù)總線來(lái)說(shuō),握手和一個(gè)保持寄存器很有用,但每次向新時(shí)鐘域傳送的數(shù)據(jù)字都不能超過(guò)一個(gè)。附錄一 異步fifo的設(shè)計(jì)代碼module asynfifo(wrclk,rdata,reclk,wdata,wrst_n,rrst_n,wfull,rempty)。input wrclk,reclk。input wrst_n,rrst_n。input [7:0] wdata。output [7:0] rdata。output wfull,rempty。wire [7:0] wptr,rptr。wire wfulle,remptye。re_wr_logic re_wr_logic_a(.wrclk(wrclk),.wrst_n(wrst_n),.wfull(wfull),.wptr(wptr),.reclk(reclk),.rrst_n(rrst_n),.rempty(rempty),.rptr(rptr))。duralportram1 duralportram_a(.data(wdata),.wrclock(wrclk),.rdclock(reclk),.rdaddress(rptr),.rden(remptye),.wraddress(wptr),.wren(wfulle),.q(rdata))。assign wfulle=!wfull。assign remptye=!rempty。endmodule(產(chǎn)生讀寫(xiě)指針和空滿標(biāo)志)module re_wr_logic(wrclk,wrst_n,wfull,wptr,reclk,rrst_n,rempty,rptr)。parameter n=8。input wrclk。//input wren。//is it needed?input wrst_n。output reg wfull。output reg [n1:0] wptr。input reclk。input rrst_n。output reg rempty。output reg [n1:0] rptr。reg [7:0] wbin,rbin。wire [7:0] wbnext,wgnext,rbnext,rgnext。wire full,empty。wire dirset,dirrst,dirrst2。wire high=1。//???ok!reg direction。reg wfull2,rempty2。//reg [n1:0] wptr0,wptr1,rptr0,rptr1。always @(posedge wrclk or negedge wrst_n)//generate wptr if(!wrst_n) begin wptr=839。d0。 wbin=839。d0。 wfull2=839。d0。 wfull=839。d0。 end else begin wbin=wbnext。 wptr=wgnext。 endassign wbnext=wfull?wbin:wbin+1。assign wgnext=(wbnext1)^wbnext。always @(posedge reclk or negedge rrst_n)//generate rptr if(!rrst_n) begin rptr=0。 rbin=0。 rempty2=839。d0。 rempty=839。d0。 end else begin rbin=rbnext。 rptr=rgnext。 endassign rbnext=rempty?rbin:rbin+1。assign rgnext=(rbnext1)^rbnext。//generate full,wfull,empty,remptyassign dirset=~((wptr[n1]^rptr[n2])amp。(~(wptr[n2]^rptr[n1])))。assign dirrst=(~(wptr[n1]^rptr[n2]))amp。(wptr[n2]^rptr[n1])。assign dirrst2=~(dirrst||wrst_n)。always @(posedge high or negedge dirset or negedge dirrst2) if(!dirrst2) direction=0。 else if (!dirset) direction=1。 else direction=high。assign full=~((wptr==rptr)amp。(~direction))。assign empty=~(directionamp。(wptr==rptr))。always @(posedge wrclk or negedge full or negedge wrst_n) if (!wrst_n) {wfull,wfull2}=239。b00。 else if(!full) {wfull,wfull2}=239。b11。 else {wfull,wfull2}={wfull2,~full}。always @(posedge reclk or negedge empty) if(!empty) {rempty,rempty2}=239。b11。 else {rempty,rempty2}={rempty2,~empty}。endmodule(使用altera的lpm_ram_dp產(chǎn)生)module duralportram1 (data,rdaddress,rdclock,rden,wraddress,wrclock,wren,q)。input[7:0] data。input[7:0] rdaddress。input rdclock。input rden。input[7:0] wraddress。input wrclock。input wren。output[7:0] q。wire [7:0] sub_wire0。wire [7:0] q = sub_wire0[7:0]。altsyncramaltsyncram_ponent (.wren_a (wren),.clock0 (wrclock),.clock1 (rdclock),.address_a (wraddress),.address_b (rdaddress),.rden_b (rden),.data_a (data),.q_b (sub_wire0),.aclr0 (139。b0),.aclr1 (139。b0),.addressstall_a (139。b0),.addressstall_b (139。b0),.byteena_a (139。b1),.byteena_b (139。b1),.clocken0 (139。b1),.clocken1 (139。b1),.data_b ({8{139。b1}}),.q_a (),.wren_b (139。b0))。defparam = CLOCK1, = BYPASS, = BYPASS, = BYPASS, = Cyclone II, = altsyncram, = 256, = 256, = DUAL_PORT, = NONE, = CLOCK1, = FALSE, = CLOCK1, = 8, = 8, = 8, = 8, = 1。endmodule 參考文獻(xiàn)[1] 陳曦,:中國(guó)水利水電出版社,~84.[2] 潘松,:科學(xué)出版社,~46.[3] 鄭亞民,:國(guó)防工業(yè)出版社,~58.[4] :北京航空航天大學(xué)出版社,~87.[5] :電子工業(yè)出版社,~58. [6] 夏宇, :~70.[7] 朱永峰,陸生禮,,2003.(11)。60~61.[8] 魏芳,劉志軍,. 電子技術(shù)應(yīng)用,~102.[9] Cummings C E, Alfke P. Simulation and synthesis techniques for asynchronous FIFO design with asynchronous pointer parisons [Z]. SNUG, ~18.[10] :電子工業(yè)出版社,~225.第 39 頁(yè) 共 39 頁(yè)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1