重要接口部件——SRAM
重要接口部件——SRAM
SRAM在數學模型中對應著靜態數組。
當給出地址下標后,數組會輸出所存儲的數據值。當給出數據地址(Address),并被時鐘上升采樣后,SRAM的數據輸出Q端將會輸出存儲的數據;當SRAM處于存儲數據改寫狀態時,SRAM將在時鐘上升沿采樣數據輸入D端的信號,并將其存儲到內部單元中。
下面是SRAM的Verilog仿真模型:
module spram #(parameter ADDR_WIDTH=6 ,DATA_WIDTH=8)(input [(DATA_WIDTH-1):0] data,input [(ADDR_WIDTH-1):0] addr,input we, clk,output [(DATA_WIDTH-1):0] q ); reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0]; reg [ADDR_WIDTH-1:0] addr_reg; always @ (posedge clk)beginif (we) beginram[addr] <= data;endaddr_reg <= addr; end assign q = ram[addr_reg]; endmoduleSRAM的時序
標準的SRAM讀寫時序如下圖所示,該圖源自SMIC65nmSRAM模型,其他廠家SRAM時序圖也基本一樣。
同步SRAM的時序與寄存器(D觸發器)的最大區別就是讀取的數據內容相對于寄存器晚一個時鐘節拍,寫時序則是完全一樣(在時鐘沿鎖存)。
SRAM時序于APB讀寫時序基本一致。
寄存器堆
無論時RegFile還是SRAM,如果地址位寬于數據存儲深度比例較大,都會有較大的面積浪費。
例如256×256的RAM,地址位寬為256位,數據存儲個數位256個,在ASIC中回有較大的MUX單元浪費,而相對FPGA,也有一些額外的開銷浪費,所以在使用時盡量用小的地址位寬。
此外在FPGA中,只有SRAM而沒有RegFile,而在CPLD中則存在異步SRAM,即類似組合電路的RAM,一旦給出地址,數據立刻輸出。
雙口RAM
除了上面的單口RAM外,還有一種支持雙地址操作的RAM,稱為雙口RAM(Dual Port RAM)。
雙口RAM分成兩種:一種是簡單雙口RAM,采用單一時鐘,支持一個都地址口和一個寫地址口;另外一種時真雙口RAM,真雙口RAM支持兩個時鐘,同時支持完整的兩套地址讀寫。
在低端FPGA種一般只有簡單雙口RAM,只有在高端的FPGA中才有真雙口RAM,這是因為真雙口RAM的成本代價很高,而簡單雙口RAM的設計相對容易。
在ASIC工藝廠商里同樣只有真雙口RAM與雙口Register File,而沒有簡單的雙口RAM。
下面內容時一個簡單雙口RAM的行為模型:
module dpram #(parameter ADDR_WIDTH=6 ,DATA_WIDTH=8) ( input [(DATA_WIDTH-1):0] data, input [(ADDR_WIDTH-1):0] read_addr, input [(ADDR_WIDTH-1):0] write_addr, input we, input clk, output [(DATA_WIDTH-1):0] q ); reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0]; reg [(DATA_WIDTH-1):0] q_out; always @ (posedge clk) beginif (we) beginram[write_addr] <= data;endq_out <= ram[read_addr]; // read old data! end assign q = q_out ; endmodule源自:《通信IC設計》,摘錄下來,只做學習;
總結
以上是生活随笔為你收集整理的重要接口部件——SRAM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用canvas画钟,实时变化的钟
- 下一篇: PDF转换成Word