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

正文內(nèi)容

基于modelsim的dma控制器的設(shè)計(jì)學(xué)士學(xué)位論文-資料下載頁(yè)

2025-08-19 18:52本頁(yè)面

【導(dǎo)讀】DMA方式適用于高速傳送成組數(shù)據(jù)。DMA控制器將向內(nèi)存發(fā)出地址和控制信。號(hào),修改地址,對(duì)傳送的字的個(gè)數(shù)計(jì)數(shù),并且以中斷方式向CPU報(bào)告?zhèn)魉筒僮鞯慕Y(jié)束。DMA方式的主要優(yōu)點(diǎn)是傳輸速度快。CPC取指令、取數(shù)、送數(shù)等操作。目前由于大規(guī)模集成電路工藝發(fā)展,很多廠家直接。生產(chǎn)大規(guī)模集成電路的DMA控制器,雖然DMA控制器復(fù)雜程度差不多接近于CPU,但是用起來(lái)非常方便。本文在基于VerilogHDL設(shè)計(jì)DMA控制器時(shí),采用的是Top-Down的設(shè)計(jì)方法。DMA控制器電路系統(tǒng)是由數(shù)據(jù)寄存器、地址產(chǎn)生器、狀態(tài)控制器三個(gè)子模塊組成,的基礎(chǔ)上完成的。DMA控制器的研究意義及背景··························································1. DMA控制器國(guó)內(nèi)外發(fā)展?fàn)顩r·························································&#1

  

【正文】 產(chǎn)生單元 (AGU)外部信號(hào)分布 : sys_clk 為全局時(shí)鐘信號(hào); clear_agu 為 AGU的清零復(fù)位信號(hào),當(dāng)清零復(fù)位信號(hào)為高電平時(shí),地址信號(hào) mem_gen_oaddr、byte_gen_oaddr、 fb_gen_oaddr、 rc_gen_oaddr 都清零復(fù)位; latch_tr_addresses 為 RISC處理器的指令地址;當(dāng)使能信號(hào) byte_gen_ldinit 為高電平時(shí),字節(jié)數(shù)地址byte_gen_oaddr 生成,當(dāng)使能信號(hào) byte_gen_enable 為高電平時(shí),字節(jié)數(shù)地址byte_gen_oaddr 加 1;當(dāng)使能信號(hào) rc_gen_ldinit 為高電平時(shí), RC 的地址 rc_gen_oaddr 生成,當(dāng)使能信號(hào) rc_gen_enable 為高電平時(shí), RC 的地址 rc_gen_oaddr 加 1 ; 當(dāng)使能信號(hào) mem_gen_ldinit 為高電平時(shí), mem_gen_oaddr 生成,當(dāng)使能信號(hào) mem_gen_enable 為 高 電 平 時(shí) , memory 的地址 mem_gen_oaddr 加 1;當(dāng)使能信號(hào) fb_gen_enable為高電平時(shí), FB 的地址 fb_gen_oaddr 加 1[4]。 圖 DMA 控制器地址產(chǎn)生單元?jiǎng)澐? 理工大學(xué)學(xué)士學(xué)位論文 24 地址產(chǎn)生器模塊行為級(jí)設(shè)計(jì)的 Verilog HDL 描述如下: Module //端口定義 AGU(mem_gen_oaddr,byte_gen_oaddr,fb_gen_oaddr,rc_gen_oaddr, latch_tr_addresses,latch_tr_control,mem_gen_ldinit, mem_gen_enable,byte_gen_ldinit,byte_gen_enable, fb_gen_enable,rc_gen_ldinit,rc_gen_enable,sys_clk, clear_agu)。 input clear_agu,sys_clk。 //輸入全局時(shí)鐘信號(hào)和 AGU復(fù)位清零信號(hào) input[39:0]latch_tr_addresses。 //輸入處理器指令地址 input[3:0]latch_tr_control。 //輸入處理器控制 input mem_gen_ldinit,mem_gen_enable,byte_gen_ldinit。 input byte_gen_enable,fb_gen_enable,rc_gen_ldinit。 input rc_gen_enable。 output[15:0]mem_gen_oaddr。 output[15:0]byte_gen_oaddr。 output[5:0]fb_gen_oaddr。 output[7:0]rc_gen_oaddr。 wire[39:0]latch_tr_addresses。 wire[3:0]latch_tr_control。 wire clear_agu,sys_clk。 //聲明一個(gè) wire 型的全區(qū)時(shí)鐘信號(hào)和一個(gè)AGU 清零復(fù)位信號(hào) wire mem_gen_ldinit,mem_gen_enable。 wire byte_gen_ldinit,byte_gen_enable。 wire fb_gen_ldinit,fb_gen_enable。wire rc_gen_ldinit,rc_gen_enable。 reg[15:0]mem_gen_oaddr。 reg[15:0]byte_gen_oaddr。 reg[5:0]fb_gen_oaddr。 reg[7:0]rc_gen_oaddr。 理工大學(xué)學(xué)士學(xué)位論文 25 integer i。 always@(posedge sys_clk) //時(shí)序邏輯 if(clear_agu==1) begin for(i=0。i16。i=i+1) begin mem_gen_oaddr[i]=0。 byte_gen_oaddr[i]=0。 end rc_gen_oaddr=839。b00000000。 fb_gen_oaddr=639。b000000。 end else if(byte_gen_ldinit==1) if(latch_tr_control[1]==1) byte_gen_oaddr=latch_tr_addresses[23:8]。 else byte_gen_oaddr[15:0]={latch_tr_addresses[21:8], 239。b00}。 else if(byte_gen_enable==1) byte_gen_oaddr=byte_gen_oaddr+ 1539。b000_0000_0000_0001。 else if(rc_gen_ldinit==1) rc_gen_oaddr=latch_tr_addresses[7:0]。 else if(rc_gen_enable==1) rc_gen_oaddr=rc_gen_oaddr+839。b0000_0001。 else if(mem_gen_ldinit==1) mem_gen_oaddr=latch_tr_addresses[39:24]。 else if(mem_gen_enable==1)mem_gen_oaddr=mem_gen_oaddr +1539。b000_0000_0000_0001。 理工大學(xué)學(xué)士學(xué)位論文 26 else if(fb_gen_enable==1) fb_gen_oaddr=fb_gen_oaddr+639。b000001。 endmodule// 狀態(tài)控制器模塊的行為級(jí)設(shè)計(jì)描述 狀態(tài)控制器是 DMA 的核心,它從 RISC 處理器獲得信息,從而處理到 FB 或 RC的數(shù)據(jù)傳輸 。狀態(tài)控制器依據(jù)字節(jié)數(shù)或者來(lái)自 RISC 處理器的指令要求判斷何時(shí)終止數(shù)據(jù)傳輸。狀態(tài)轉(zhuǎn)換是由時(shí)鐘的上升沿觸發(fā)。狀態(tài)控制器的外部信號(hào)分布 : sys_clk 為全局時(shí)鐘信號(hào),所有狀態(tài)轉(zhuǎn)換都在時(shí)鐘上升沿觸發(fā); glb_reset 為全局清零復(fù)位信號(hào),當(dāng) glb_reset 為高電平時(shí),所有信號(hào)清零復(fù)位; clear_agu 為 AGU 模塊的清零復(fù)位信號(hào); clear_data_regs 為 DRU模塊的清零復(fù)位信號(hào); clear_latch 為 RISC 的指令清零復(fù)位信號(hào); dma_enable 為決定 DMAC 是否工作的使能信號(hào); latch_tr_addresses 是來(lái)自 RISC 的指令信號(hào); latch_tr_control 為指令控制信號(hào); fb_read、 fb_write 分別為 FB 讀、寫的使能信號(hào); mem_read、 mem_write 分別為 MEMORY 的讀、寫的使能信號(hào); rc_context_load 為 RC 數(shù)據(jù)下載使能信號(hào); str_mux_sel 為通道選擇信號(hào); str_3st_trl 為通道控制信號(hào); byte_gen_ldinit 為字節(jié)數(shù)地址 byte_gen_oaddr 生成的使能信號(hào);byte_gen_enable 為字節(jié)數(shù)地址 byte_gen_oaddr 加 1 的使能信號(hào); rc_gen_ldinit 為 RC 地址 rc_gen_oaddr 生成的使能信號(hào); rc_gen_enable 為 RC 地址 rc_gen_oaddr 加 1 的使能信號(hào); mem_gen_ldinit 為 MEMOR 地址 mem_gen_oaddr 生成 的使能信 號(hào);mem_gen_enable 為 MEMORY 地址 mem_gen_oaddr 加 1 的使能信號(hào); fb_gen_enable為 FB 地址 fb_gen_oaddr 加 1 的使能信號(hào); busy_done 為表示 DMAC 工作狀態(tài)的信號(hào)[4]。 狀態(tài)控制器模塊 行為級(jí)設(shè)計(jì)的 Verilog HDL 描述如下: always@(posedge sys_clk or glb_reset) //輸入全局時(shí)鐘信號(hào)和全局復(fù)位清零信號(hào) begin if(glb_reset) curr_state=s0。 else curr_state=next_state。 end 理工大學(xué)學(xué)士學(xué)位論文 27 always@(curr_state or byte_gen_oaddr or dma_enable or latch_tr_control or latch_tr_addresses ) begin case(curr_state) //reset the dmac s0: begin clear_latch=1。 clear_agu=1。 clear_data_regs=1。 fb_read=0。 fb_write=0。 rc_context_load=0。 mem_read=0。 mem_write=0。 mem_gen_ldinit=0。 mem_gen_enable=0。 byte_gen_ldinit=0。 byte_gen_enable=0。 fb_gen_enable=0。 rc_gen_ldinit=0。 rc_gen_enable=0。 up_reg32_enable=0。 lo_reg32_enable=0。 ld_3st_trl=0。 reg64_enable1=0。 reg64_enable2=0。 str_mux_sel=0。 str_3st_trl=0。 busy_done=1。 理工大學(xué)學(xué)士學(xué)位論文 28 next_state=s1。 end //wait for TinyRisc to give instruction s1: begin clear_latch=0。 clear_agu=0。 clear_data_regs=0。 fb_read=0。 fb_write=0。 rc_context_load=0。 mem_read=0。 mem_write=0。 mem_gen_ldinit=0。 mem_gen_enable=0。 byte_gen_ldinit=0。 byte_gen_enable=0。 fb_gen_enable=0。 rc_gen_ldinit=0。 rc_gen_enable=0。 up_reg32_enable=0。 lo_reg32_enable=0。 ld_3st_trl=0。 reg64_enable1=0。 reg64_enable2=0。 str_mux_sel=0。 str_3st_trl=0。 busy_done=1。 if(dma_enable==1) next_state=s2。 理工大學(xué)學(xué)士學(xué)位論文 29 else next_state=s1。 end 到這里為止,就完成了對(duì) DMA 控制器的功能模塊劃分,以及對(duì)每個(gè)功能模塊的 Verilog HDL 行為描述??梢钥吹?,在以上行為描述中使用了多種數(shù)據(jù)類型,而不需顧及他們的電路實(shí)現(xiàn)。這些方面都體現(xiàn)了行為描述面向系統(tǒng)行為、具有高層次的特征。 全電路的行為級(jí)描述 對(duì)整個(gè)電路的行為級(jí)設(shè)計(jì)描述就是把以上這些功能模塊的行為描述組合起來(lái)。在 Verilog HDL 中,模塊是并行運(yùn)行的,通常由一個(gè)高層的模塊來(lái)定義一個(gè)封閉的系統(tǒng)。在本設(shè)計(jì)中,這個(gè)高層模塊即 DMAC 模塊。高層模塊的重要信號(hào)說(shuō)明: load_store 為讀取、存儲(chǔ)控制信號(hào); rc_fb_select 為 RC 和 FB 的判斷選擇信號(hào); set_select 為設(shè)置選擇信號(hào); bank_select 為狀態(tài)選擇信號(hào); ld_row_col 為讀取 RC 陣列內(nèi)容信號(hào);ld_context_num 為讀取 context 的字節(jié)數(shù)信號(hào); ld_row_col_num 為讀取 RC 陣列的行和列數(shù)信號(hào); byte_num 為字節(jié)數(shù)信號(hào); init_mem_addr 輸入 MEMORY 地址信號(hào) [4]。整個(gè)電路行為級(jí)設(shè)計(jì)的 Verilog HDL 描述如下: Module //端口定義 DMA(sys_clk,glb_reset,dma_enable,load_store,rc_fb_select, bank_select,set_select,ld_row_col,ld_context_num, ld_row_col_num,init_mem_addr,byte_num,busy_done, fb_read,fb_write,fb_set_sel,fb_addr,fb_data,rc_context_data, rc_context_addr,rc_context_load,mem_read,mem_write, mem_addr,mem_data,up_reg32_odata,lo_reg32_odata, reg64_odata1,reg64_odata2,mem_gen_oaddr,byte_gen_oaddr, fb_gen_oaddr,rc_gen_oaddr,clear_latch)。 input sys_clk,glb_reset。 //輸入全局時(shí)鐘信號(hào)和全局復(fù)位清零信號(hào) input dma_enable,load_store,rc_fb_select。 input bank_select,set_select,ld_row_col。 input[3:0]ld_context_num。 //輸入讀取 contest 的字節(jié)數(shù)信號(hào) input[2:0]ld_row_col_num。 //輸入 RC 列陣行和列數(shù)信號(hào) 理工大學(xué)學(xué)士學(xué)位論文 30 input[15:0]init_mem_addr。 //輸入 memory 的地址信號(hào) input[15:0]byte_num。 //輸入字節(jié)數(shù)信號(hào) output busy_done。 output fb_read,fb_write,fb_set_sel。 output[6:0]fb_addr。 inout[63:0]fb_data。 inout rc_context_load。 output[31:0]rc_context_data。 output[7:0]rc_context_addr。 output mem_read,mem_write。 output[15:0]mem_addr。 inout[31:0]mem_data。 inout[31:0]up_reg32_odata,lo_reg32_odata。 inout[63:0]reg64_odata1,reg64_odata2。 inout[15:0]mem_gen_oaddr。 inout[15:0]byte_gen_oaddr。 inout[5:0]fb_gen_oaddr。 inout[7:0]rc_gen_oaddr。 inout clear_latch。 wire sys_clk,clear_data_regs。 //聲明一個(gè) wire型的全局時(shí)鐘信號(hào)和清零信號(hào) wire[31:0]mem_data。 //聲明 32 位隨機(jī)存儲(chǔ)器數(shù)據(jù) wire[63:0]fb_data。 //聲明 64 位 幀緩沖器數(shù)據(jù) wire[31:0]up_reg32_odata。 wire[31:0]lo_reg32_odata。 wire up_reg32_enable。 wire lo_reg32_enable。 wire ld_3st_trl。 wire[63:0]reg64_odata1。 wire[63:0]reg64_odata2。 理工大學(xué)學(xué)士學(xué)位論文 31 wire reg64_enable1。 wire reg64_enable2。 wire str_mux_sel。 wire str_3st_trl。 wire clear_agu。 wire mem_gen_ldinit,mem_gen_enable。 wire byte_gen_ldinit,byte_gen_enable。 wire fb_gen_ldinit,fb_gen_enable。 wire rc_gen_ldinit,rc_gen_enable。 wire[15:0]mem_gen_oaddr。 wire[15:0]byte_gen_oaddr。 wire[5:0]fb_gen_o
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1