quartus ii綜合ram及相關知識備忘

2021-08-22 13:17:42 字數 900 閱讀 1083

reg[15:0] datamem[7:0];

直接綜合,並不會用fpga中的memory資源

需要加上(* ramstyle = 「m-ram」 *)才會讓quartus將其綜合使用ram資源

(ramstyle = 「m-ram」)reg[15:0] datamem[7:0];

還可以將m-ram換成其他字樣,使系統使用m4k塊之類的,詳見

這裡的記憶體模型指的是記憶體的行為模型。verilog中提供了兩維陣列來幫助我們建立記憶體的行為模型。具體來說,就是可以將記憶體宣稱為乙個reg型別的陣列,這個陣列中的任何乙個單元都可以通過乙個下標去訪問。這樣的陣列的定義方式如下:

reg [wordsize : 0] array_name [0 : arraysize];

例如:
reg [7:0] my_memory [0:255];

其中 [7:0] 是記憶體的寬度,而[0:255]則是記憶體的深度(也就是有多少儲存單元),其中寬度為8位,深度為256。位址0對應著陣列中的0儲存單元。

如果要儲存乙個值到某個單元中去,可以這樣做:

my_memory [address] = data_in;

而如果要從某個單元讀出值,可以這麼做:

data_out = my_memory [address];

但要是只需要讀一位或者多個位,就要麻煩一點,因為verilog不允許讀/寫乙個位。這時,就需要使用乙個變數轉換一下:

例如:data_out = my_memory[address];

data_out_it_0 = data_out[0];

這裡首先從乙個單元裡面讀出資料,然後再取出讀出的資料的某一位的值。
好文要頂 關注我 收藏該文

關於Quartus II工程綜合時間過長問題的解決

因為我的工程比較大,綜合時間有點長,之後在上面做影象處理演算法的實現,然後發現加上這個模組之後綜合的時間特別就,達到了3個小時,查閱了好多資料也不知道怎麼去解決這個問題,今天聽一位高人指點,終於解決了這個問題,於是就想把這個解決方案記錄下來。首先說明一下我的工程環境,我用的是quartus ii 6...

Quartus ii安裝及使用實驗報告

1.實驗目的 實驗一.verilog hdl測試模組 實驗二.時序邏輯的測試模組 一 module decoder3x8 din,en,dout,ex input 2 0 din input en output 7 0 dout output ex reg 7 0 dout reg ex alway...

Nginx部署及綜合應用

nginx是一款輕量級的http伺服器軟體,由俄羅斯的igor sysoev開發。它能夠支援高達50000個併發連線數的響應,擁有強大的靜態資源處理能力,執行穩定,並且系統資源消耗非常低,現已逐漸被越來越多的使用者認可,目前很多大型 都應用nginx伺服器作為後端 程式的反向 及負載均衡器,來提公升...