//sram input 50mhz
module sram(
clk,sw,k, //input
sram_we_n,sram_oe_n,sram_ce_n, //output
sram_ub_n,sram_lb_n, //output
sram_addr,hex, //output
sram_data //inout
);input clk,k;
input [6:0] sw;
output sram_we_n,sram_oe_n,sram_ub_n,sram_lb_n,sram_ce_n;
output reg [17:0] sram_addr;
output [6:0] hex;
inout [15:0] sram_data;
//一直使能 高低位都不遮蔽 oe讀取資料一直拉低 we低寫資料 高讀數
//寫使能和讀使能同時拉低 寫資料
assign sram_ce_n=1'b0;
assign sram_oe_n=1'b0;
//原來都賦值1 掩碼訊號低電平有效 以為低電平就掩碼
//經過一番除錯 又看了看發現低電平才能讀寫
assign sram_ub_n=1'b0;
assign sram_lb_n=1'b0;
//--------------------------資料傳輸-------------------
reg sram_we_n;
assign sram_data=sram_we_n? 16'hzzzz:;
//warning: output pin "hex" driven by bidirectional pin "sram_data" cannot be tri-stated
//assign hex=sram_data[6:0]; 直接這樣不如直接用sram_data就好了
//為了防止誤讀資料當讀有效時 把資料送給數碼管
assign hex=sram_we_n?sram_data[6:0]:6'bz;
//--------------------------讀寫交替----------------------
parameter write=1'b0;
parameter read =1'b1;
reg current_state,next_state;
always@(posedge clk)
begin
current_state<=next_state;
endalways@(posedge clk)
begin
case(current_state)
write: next_state<=read;
read : next_state<=write;
endcase
end//-----一直讀取乙個位址 可寫入兩個位址----------------
//當k為0 輸出hex隨輸入sw變化 k=1輸出固定
always@(posedge clk)
begin
case(current_state)
//write: begin sram_addr<=;sram_we_n<=0; end
//read : begin sram_addr<=18'b0; sram_we_n<=1; end
write: begin sram_addr<=18'b0; sram_we_n<=0; end
read : begin sram_addr<=; sram_we_n<=1; end
endcase
endendmodule
SRAM和SDRAM的簡單介紹
參考 is62wv51216all資料手冊 w9825g6kh資料手冊 靜態隨機訪問儲存器 static random access memory,sram 是隨機訪問儲存器的一種。相對之下,動態隨機訪問儲存器 dram 裡面所儲存的資料就需要周期性地更新。然而,當電力 停止時,sram儲存的資料還...
verilog簡單實現串列埠
uart 2017.10.7 傳送接收到的資料 波特率9600 乙個停止位 無奇偶校驗 de2板子 rx gpio k25 0 left tx tx gpio k26 1 right rx gnd 右邊第6 或者倒數第6 復位不成功 復位按鍵有問題 靠右按即可復位 特別注意 如果乙個條件中同時給乙個...
STM32F407 驅動外部SRAM
需要驅動的sram型號為is61lv25616al,價效比比51216的高很多 配置cubemx 這幾個時序比較關鍵,可以按照手冊來計算,我用下來這幾個數值比較合適。然後就沒有然後了,生成 就可以用了。檢查sram內容是否正確 uint8 t bsp testextsram void 寫sram p...