用verilog寫乙個組合邏輯的ram64x8的儲存器組織,實現簡單的讀寫功能
乙個ram64x8的儲存器由4x2=8個ram16x4的儲存晶元組成
核心**:
連線其他模組和外部介面的模組檔案virtual_lab_top.v:
//64x4儲存器實驗
`default_nettype none
module virtual_lab_top //訊號的輸入和輸出
( input wire clock,
input wire [4:0] button, //按鍵
input wire [35:0] switch, //開關
output wire [35:0] led, //指示燈
output wire [3:0] hex0, //數碼管
output wire [3:0] hex1,
output wire [3:0] hex2,
output wire [3:0] hex3
); //輸入埠賦值給內部訊號
wire [5:0] adrs = switch[5:0];
wire [7:0] data = switch[13:6];
wire write = button[0];
wire read = button[1];
wire re = button[2];
//內部訊號賦值給輸出埠(數碼管)觀察
assign hex0 = temp[3:0];
assign hex1 = temp[7:4];
//實驗邏輯
wire [7:0] temp;
reg _ce,_we,_oe;
always@(posedge write or posedge read or posedge re)
begin
if(write)
begin
_ce<=1'b0;
_we<=1'b0;
_oe<=1'b1;
endelse if(read)
begin
_ce<=1'b0;
_we<=1'b1;
_oe<=1'b0;
endelse
begin
_ce<=1'b1;
_we<=1'b1;
_oe<=1'b1;
endendram64x8 u1(.adrs(adrs),.data(data),._ce(_ce),._we(_we),._oe(_oe),.temp(temp));
endmodule
ram16x4儲存器模組檔案ram16x4.v:
module ram16x4(
input [3:0]adrs,
input [3:0]data,
input _ce,_we,_oe,
output reg [3:0] temp
); reg [3:0] mem[0:15];//16 x 4 ram
//assign data = (~_ce & _we & ~_ce)? temp:4'hz;
always@(*)
begin
if(_ce == 0) begin
if(_we == 0&&_oe == 1)
mem[adrs] <= data;
else if(_we == 1&&_oe == 0)
temp <= mem[adrs];
else
temp <= 4'hz;
endend
endmodule
ram16x8儲存器模組檔案ram16x8.v:
module ram16x8(
input [3:0] adrs,
input [7:0] data,
input _ce,_we,_oe,
output [7:0] temp
);ram16x4 u1(adrs,data[7:4],_ce,_we,_oe,temp[7:4]);
ram16x4 u2(adrs,data[3:0],_ce,_we,_oe,temp[3:0]);
endmodule
ram64x8儲存器模組檔案ram64x8.v:
module ram64x8(
input [5:0] adrs,
input [7:0] data,
input _ce,_we,_oe,
output [7:0] temp
);reg [3:0] _cee;
ram16x8 u1(adrs[3:0],data,_cee[0],_we,_oe,temp);
ram16x8 u2(adrs[3:0],data,_cee[1],_we,_oe,temp);
ram16x8 u3(adrs[3:0],data,_cee[2],_we,_oe,temp);
ram16x8 u4(adrs[3:0],data,_cee[3],_we,_oe,temp);
//2-to-4 decode
always@(*)
begin
if(_ce==0)
case(adrs[5:4])
0:_cee=4'b1110;
1:_cee=4'b1101;
2:_cee=4'b1011;
3:_cee=4'b0111;
default:_cee=4'hf;
endcase
else
_cee = 4'hf;
endendmodule
注意:本次設計讀寫功能分別採用一條資料線,並非採用雙向資料匯流排 STM32學習 儲存器組織
stm32f1有四種儲存單元,依次是sram flash fsmc和ahb到apb橋 掛載各種外設 程式儲存器 資料儲存器 暫存器和輸入輸出埠被組織在同乙個4gb的線性位址空間內。資料位元組以小端格式存放在儲存器中。乙個字裡的最低位址位元組被認為是該字的最低有效位元組,而最高位址位元組是最高有效位元...
8086儲存器的分段組織與管理
1 熟悉8086儲存器的分段管理方式。2 掌握儲存單元位址的兩種描述方式 實體地址和邏輯位址,以及從邏輯位址到實體地址的換算方法。記憶體是設定在主機內部的儲存器,能被cpu直接訪問,主要用來存放當前執行的程式和所需的數 據,以便隨時向cpu提供資訊。它與cpu的聯絡最密切,若把cpu比作生產成品的工...
80x86儲存器組織結構
概括 本文介紹80x86儲存器組成的基本原理,會隱藏一些硬體細節。一 基本組成 1.1 計算機系統由cpu,memory,i o組成,如下圖,時鐘驅動cpu處理 讀 寫 運算 memory裡的程式或者資料,以及控制i o。1.2 當然現的計算機系統不會如此簡單,因為memory有很多種,i o裝置的...