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

正文內容

fpga內部資料大匯集-資料下載頁

2025-01-12 13:37本頁面
  

【正文】 個文件以讀取向量。? 行為級代碼可以很容易地產(chǎn)生一個啟動時間不規(guī)則的時鐘波形,并且可以在時刻零初始化時鐘。 第 16章 存儲器建模學習內容 :? 如何描述存儲器? 如何描述雙向端口存儲器件建模描述存儲器必須做兩件事:? 說明一個適當容量的存儲器。? 提供內容訪問的級別,例如:252。只讀252。讀和寫252。寫同時讀252。多個讀操作,同時進行單個寫操作252。同時有多個讀和多個寫操作,有保證一致性的方法簡單 ROM描述 下面的 ROM描述中使用二維寄存器組定義了一個存儲器 mem。 ROM的數(shù)據(jù)單獨保存在文件 my_rom_data中,如右邊所示。通常用這種方法使 ROM數(shù)據(jù)獨立于 ROM描述。`timescale 1ns/10psmodule myrom (read_data, addr, read_en_)。 input read_en_。 input [3:0] addr。 output [3:0] read_data。 reg [3:0] read_data。 reg [3:0] mem [0:15]。 initial $readmemb (my_rom_data, mem)。 always ( addr or read_en_) if (! read_en_) read_data = mem[addr]。endmodulemy_rom_data0000010111000011110100100011111110001001100000011101101000011101簡單的 RAM描述 RAM描述比 ROM略微復雜,因為必須既有讀功能又有寫功能,而讀寫通常使用同一數(shù)據(jù)總線。這要求使用新的處理雙向數(shù)據(jù)線的建模技術。在下面的例子中,若讀端口未使能,則模型不驅動數(shù)據(jù)總線;此時若數(shù)據(jù)總線沒有寫數(shù)據(jù)驅動,則總線為高阻態(tài) Z。這避免了 RAM寫入時的沖突。`timescale 1ns /1nsmodule mymem (data, addr, read, write)。 inout [3:0] data。 input [3:0] addr。 input read, write。 reg [3:0] memory [0:15]。 // 16*4// 讀 assign data = read ? memory[addr] : 439。bz。// 寫 always ( posedge write) memory[addr] = data。endmodule 這個描述可綜合,但許多工具僅僅產(chǎn)生一個寄存器堆,因此與一個真正的存儲器相比耗費更多的面積。參數(shù)化存儲器描述 在下面的例子中,給出如何定義一個字長和地址均參數(shù)化的只讀存儲器件。module scalable_ROM (mem_word, address)。 parameter addr_bits = 8。 // 地址總線寬度 parameter wordsize = 8。 // 字寬 parameter words = (1 addr_bits)。 // mem容量 output [wordsize:1] mem_word。 // 存儲器字 input [addr_bits:1] address。 // 地址總線 reg [wordsize:1] mem [0 : words1]。 // mem聲明// 輸出存儲器的一個字 wire [wordsize:1] mem_word = mem[address]。endmodule 例中存儲器字范圍從 0而不是 1開始,因為存儲器直接用地址線確定地址。也可以用下面的方式聲明存儲器并尋址。 reg [wordsize:1] mem [1:words]。 // 從地址 1開始的存儲器// 存儲器尋址時地址必須加 1 wire [wordsize:1] mem_word = mem[ address + 1]。 存儲器數(shù)據(jù)裝入可以使用循環(huán)或系統(tǒng)任務給存儲器裝入初始化數(shù)據(jù)? 用循環(huán)給存儲器的每個字賦值 for (i= 0。 i memsize。 i = i+ 1) // initialize memory mema[ i] = {wordsize{ 139。b1}}。 ? 調用系統(tǒng)任務 $readmem $readmemb(mem_file. txt, mema)。 可以用 系統(tǒng)任務 $readmem給一個 ROM或 RAM加載數(shù)據(jù)。對于 ROM,開始時寫入的數(shù)據(jù)就是其實際內容。對于 RAM,可以通過初始化,而不是用不同的寫周期給每個字裝入數(shù)據(jù)以減少仿真時間。 使用雙向端口用關鍵詞 inout聲明一個雙向端口 inout [7:0] databus。雙向端口聲明遵循下列規(guī)則:? inout端口不能聲明為寄存器類型,只能是 類型。252。 這樣仿真器若有多個驅動時可以確定結果值。252。 對 inout端口可以從任意一個方向驅動數(shù)據(jù)。端口數(shù)據(jù)類型缺省為 類型。不能對 進行過程賦值,只能在過程塊外部持續(xù)賦值,或將它連接到基本單元。? 在同一時間應只從一個方向驅動 inout端口。252。 例如:在 RAM模型中,如果使用雙向數(shù)據(jù)總線讀取 RAM數(shù)據(jù),同時在數(shù)據(jù)總線上驅動寫數(shù)據(jù),則會產(chǎn)生邏輯沖突,使數(shù)據(jù)總線變?yōu)槲粗?52。 必須設計與 inout端口相關的邏輯以確保正確操作。當把該端口作為輸入使用時,必須禁止輸出邏輯。雙向端口建模 — 使用基本單元建模module bus_xcvr( bus_a, bus_b, en_a_b, en_b_a)。 inout bus_a, bus_b。 input en_a_b, en_b_a。 bufif1 b1 (bus_b, bus_a, en_a_b)。 bufif1 b2 (bus_a, bus_b, en_b_a)。// Structural module logicendmodule 若 en_a_b=1,基本單元 b1使能, bus_a數(shù)據(jù)傳送到 bus_b若 en_b_a=1,基本單元 b2使能, bus_b數(shù)據(jù)傳送到 bus_a信號 en_a_b和 en_b_a控制使能雙向端口建模 — 使用持續(xù)賦值建模module bus_xcvr( bus_a, bus_b, en_a_b, en_b_a)。 inout bus_a, bus_b。 input en_a_b, en_b_a。 assign bus_b = en_a_b ? bus_a : 39。bz。 assign bus_a = en_b_a ? bus_b : 39。bz。// Structural module logicendmodule 若 en_a_b=1,賦值語句驅動 bus_a數(shù)據(jù)到 bus_b若 en_b_a=1,賦值語句驅動 bus_b值到 bus_a信號 en_a_b和 en_b_a控制使能雙向端口建模 — 存儲器端口建模module ram_cell( databus, rd, wr)。 inout databus。 input rd, wr。 reg datareg。 assign databus = rd ? datareg : 39。bz。 always ( negedge wr) datareg = databus。endmodule當 rd=1時, datareg的值賦值 databus在 wr下降沿, databus數(shù)據(jù)寫入 datareg復習問題:? 在 Verilog中用什么結構定義一個存儲器組?? 如何向存儲器加載數(shù)據(jù)?? 如何通過一個雙向( inout)端口傳送數(shù)據(jù)?解答:? 在 Verilog中將存儲器聲明為一個一個 2維寄存器陣列。? 可以用系統(tǒng)任務 $readmem或 $readmemb或用過程賦值向存儲器加載數(shù)據(jù)? 因為 inout兩端信號必須都是 數(shù)據(jù)類型,因此只能使用基本單元,子模塊,或持續(xù)賦值驅動數(shù)據(jù)。同時還必須注意確保在任何一端不要發(fā)生驅動沖突。 演講完畢,謝謝觀看!
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1