1.sram在數學中對應靜態陣列。
(1)當給出資料位址(address),並被時鐘上公升沿取樣後,sram的資料輸出q端將會輸出儲存的資料;
(2)當sram處於儲存資料改寫狀態時,sram將會在時鐘上公升沿取樣資料輸入d端的訊號,並將其儲存到內部單元中。
sram的verilog**模型:
// a sram
module sram_6_8 #(parameter addr_width=6
,data_width=8
)(input [
data_width-1
:0] data,
input [
addr_width-1
:0] addr,
input we,
input 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) begin
if(we)
ram[addr]
<= data;
addr_reg <= addr;
endassign q = ram[addr_reg]
;endmodule
2.同步sram的時序與暫存器(d觸發器)最大的區別在於:讀取的資料內容相對於暫存器晚乙個時鐘節拍,而寫時序是一樣的(在時鐘沿鎖存)。sram時序與apb讀寫時序基本一致。
1.除以上的單口ram外,還有支援雙位址操作的ram,稱為雙口ram(dual port ram)。
2.雙口ram分為兩種:
(1)簡單雙口ram,採用單一時鐘,支援乙個讀位址口和乙個寫位址口;
(2)真雙口ram,支援兩個時鐘,同時支援完整的兩套位址讀寫。
簡單雙口ram的verilog模型:
module ram_6_8 #(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) begin
if(we)
ram[write_addr]
<= data;
q_out <= ram[read_addr]
;//read old data!
endassign q = q_out;
endmodule
1.移位暫存器實際上就是多個d觸發器串聯在一起,實現資料的固定延遲。實現n個週期的延遲需要n-1個觸發器串接實現。
2.移位暫存器的另一種實現方式:通過雙口ram完成延遲:讀位址與寫位址相鄰,且每週期都移動乙個位置,並形成乙個固定差值,即延遲節拍數。
標準基於d觸發器的移位暫存器**如下:
module shift_reg_8_16 #(parameter taps=8
,width=16
)(input clk,
input rst_n,
input [
width-1
:0] d_in,
output [
width-1
:0] d_out);
generate
genvar i;
//利用generate語句自動生成並行多位移位暫存器
for(i =
0;i <
width
;i = i +1)
begin:shift_reg
reg [
taps-1
:0] r_reg;
wire [
taps-1
:0] r_next;
always@ (posedge clk or negedge rst_n)if(
!rst_n)
r_reg <=0;
else
r_reg <= r_next;
//更新移位暫存器狀態,可以在此處修改左移、右移或者狀態
assign r_next =
;assign d_out[i]
= r_reg[0]
;end
endgenerate
endmodule
FPGA重要的設計思想
fpga重要設計思想 1.速度和面積互換原則。以面積換速度可以實現很高的資料吞吐率,其實串 並轉換 就是一種以面積換速度的思想 2.桌球操作。桌球操作的處理流程為 輸入資料流通過 輸入資料選擇單元 將資料流等時分配到兩個資料緩衝區,通過 輸入資料選擇單元 和 輸出資料選擇單元 按節拍 相互配合的切換...
基於FPGA的VGA介面設計(一)
介面類的設計幾乎是每個fpga設計者都需要做的東西,可以試想一下,乙個沒有介面的設計,我們想要的指令無法傳遞到fpga,fpga中需要反饋的資料也無法被我們所知 因此,在寫這篇部落格以前,我回顧了一下我的學習過程,發現不知不覺中學習了很多種介面,其實在學習的時候並不知道,所以有時候我們得回頭看看,總...
基於FPGA的VGA介面設計(三)
在之前的文章中介紹了有關vga的掃瞄方式 行場同步時序,繼續記錄一下vga時序中的具體引數是怎麼來的。我們經常會看到有關vga解析度這樣的描述 640x480 60hz 當然還有其他的解析度形式,意思就是說,1s之內重新整理60張,每張的有效顯示區域是640x480個畫素點,來看一下下圖中詳細的描述...