/* * srams.c -- Implementación de las SRAMs. * Ultima modificación: 8-11-00. * gse. */ #include "defs.h" #include "gates.h" #include "decods.h" #include "muxs.h" #include "latches.h" #include "srams.h" void SRAM_BIT::run(WIRE &in, WIRE &select, WIRE &write, WIRE &out) { n.run(nin,in); a0.run(r,3,write,nin,select); a1.run(s,3,write,in,select); f.run(s,r,q,qn); b.run(out,q,select); } void BIT_4x4_Array::run(WIRE in[4], WIRE &blksel, WIRE sel[4], WIRE &write, WIRE out[4]) { int i,r,c; for(i=0;i<4;i++) a[i].run(s[i],blksel,sel[i]); for(r=0;r<4;r++) for(c=0;c<4;c++) b[r][c].run(in[c],s[r],write,out[c]); } void SRAM_16x4::run(WIRE &select, WIRE &write, WIRE addr[4], WIRE in[4], WIRE out[4]) { dec_sel.run(addr+2,select,blksel); dec.run(addr,sel); for(int i=0;i<4;i++) { blk[i].run(in,blksel[i],sel,write,out); } } void SRAM_16x32::run(WIRE &select, WIRE &write, WIRE addr[4], WIRE in[32], WIRE out[32]) { for(int i=0;i<8;i++) { blk[i].run(select,write,addr,in+i*4,out+i*4); } } void SRAM_64x32::run(WIRE &select, WIRE &write, WIRE addr[6], WIRE in[32], WIRE out[32]) { dec.run(addr+4,select,this->select); for(int i=0;i<4;i++) { blk[i].run(this->select[i],write,addr,in,out); } }