FPGA中的二維數組其實不是真正意義上的數組,而是由多個寄存器組成的ROM或RAM。
具體來說,就是可以將內存宣稱為一個reg類型的數組,這個數組中的任何一個單元都可以通過一個下標去訪問。
這樣的數組定義方式如下:
reg [wordsize : 0] memory_name [0 : memorysize];
其中[wordsize : 0]是內存的寬度,而 [0 : memorysize]則是內存的深度(也就是有多少存儲單元)。
如果要存儲一個值到某個單元中去,可以這樣做:
memory_name [address] = data_in;
如果要讀取每個單元的值,可以這么做:
data_out = memory_name [address];
由于Verilog不允許讀/寫一個位,所以需要讀寫一位或者多個位時的操作要麻煩點:
data_out = memory_name [address];
data_out_0 = data_out [0];
這里首先從一個單元讀出數據,然后再取出數據的某一位的值。
初始化內存
初始化內存有多種方式,這里介紹的是使用$readmemb和$readmemh系統任務來講保存在文件中得數據填充到內存單元中去。
$readmemb和$readmemh是類似得,只不過$readmemb用于內存得二進制表示,
$readmemh用于內存內容得十六進制表示。這里以$readmemh系統任務來介紹
注意的是:file_name是包含數據的文本文件名,mem_array是要初始化的內存單元數組名,
start_addr 和 stop_addr是可選的,指示要初始化單元的起始地址和結束地址。
如果對寄存器組進行在復位得時候進行置0,可以參考如何往寄存器組中寫入數據
溫馨提示:明德揚2023推出了全新課程——邏輯設計基本功修煉課,降低學習FPGA門檻的同時,增加了學習的趣味性,并組織了考試贏積分活動
http://m.cqqtmy.cn/ffkc/415.html
(點擊→了解課程詳情?)感興趣請聯系易老師:13112063618(微信同步)
明德揚除了培訓學習還有項目承接業務,擅長的項目主要包括的方向有以下幾個方面:
1. MIPI視頻拼接
2. SLVS-EC轉MIPI接口(IMX472 IMX492)
3. PCIE采集系統
4. 圖像項目
5. 高速多通道ADDA系統
6. 基于FPGA板卡研發
7. 多通道高靈敏電荷放大器
8. 射頻前端
需要了解相關信息可以聯系:易老師13112063618(微信同號)