본문 바로가기
verilog

SDR_SPS_DRAM

by dbdan114 2024. 7. 24.

`include "DigitSupply.vh"

 

module SDR_SPS_DRAM #(

parameter ADDR_WIDTH = 1

parameter DATA_WIDTH = 1

)(

    inout [DATA_WIDTH - 1 : 0] inoutData,

    input [ADDR_WIDTH - 1 : 0] Address,

    input Clock,

    input Enable,

    input Read,

    input Write,

    input Refresh

);

    reg [DATA_WIDTH - 1 : 0] inoutData;

    tri [ADDR_WIDTH - 1 : 0] Address;

    tri Clock;

    tri Enable;

    tri Read;

    tri Write;

    tri Refresh;

 

    tri PosEdgeClock;

    

    tri [$pow(2,ADDR_WIDTH) - 1:0] DecodedEnable;

    tri [$pow(2,ADDR_WIDTH) - 1:0] DecodedEdge;

    tri [$pow(2,ADDR_WIDTH) - 1:0] DecodedRead;

    tri [$pow(2,ADDR_WIDTH) - 1:0] DecodedWrite;

   

    genvar perDecoded;

    genvar perData;

   

    PosEdge MakePosEdge(PosEdgeClock, PullDigit, Clock);

    

    DecodeAddress #(.ADDR_WIDTH( ADDR_WIDTH)) DecodeEnable(DecodedEnable, PullDigit, Enable, Address);

    

    generate

        for(perDecoded=0; perDecoded < $pow(2,ADDR_WIDTH);perDecoded = perDecoded + 1)

        begin:Check_ DecodedEdge

            and_B_to_A DecodeEdge(DecodedEdge[perDecoded], PullDigit, DecodedEnable[perDecoded], PosEdgeClock);

        end

    endgenerate

 

   generate

        for(perDecoded=0; perDecoded < $pow(2,ADDR_WIDTH);perDecoded = perDecoded + 1)

        begin:Check_ DecodedRead

            and_B_to_A DecodeRead(DecodedRead[perDecoded], PullDigit, DecodedEdge[perDecoded], Read);

        end

    endgenerate

 

    generate

        for(perDecoded=0; perDecoded < $pow(2,ADDR_WIDTH);perDecoded = perDecoded + 1)

        begin:Check_ DecodedWrite

            and_B_to_A DecodeWrite(DecodedWrite[perDecoded], PullDigit, DecodedEdge[perDecoded], Write);

        end

    endgenerate

    

    generate

        for(perDecoded=0; perDecoded < $pow(2,ADDR_WIDTH);perDecoded = perDecoded + 1)

        begin:Check_perDecoded

        generate

            for(perData=0; perData< DATA_WIDTH; perData = perData + 1)

            begin:Check_perData

                CellOfDRAM MakeSDR_SPS_DRAM(inoutData[perData], DecodedRead[perDecoded], inoutData[perData], DecodedWrite[perDecoded], Refresh);

            end

        endgenerate

        end

    endgenerate

 

endmodule

 

'verilog' 카테고리의 다른 글

SDR_SRAM  (0) 2024.12.31
DDR_SPS_DRAM  (1) 2024.07.24
advanced CellOfDRAM  (0) 2024.06.12
advanced D_Latch  (0) 2024.06.12
DecodeAddress  (0) 2024.05.19