⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brom16k.cpp

📁 改进的基于6个mips核的NOC网络
💻 CPP
字号:
/* *  TU Eindhoven *  Eindhoven, The Netherlands * *  Name            :   brom16k.cpp * *  Author          :   A.S.Slusarczyk@tue.nl * *  Date            :    * *  Function        :   ROM based on VirtexII 16kb BlockRAMs * * */ #include "brom16k.h"void BROM16K_WRAPPER::in(){    sc_bv<DWORD> a = addr.read();    sc_bv<12> a_13_2 = a.range(13,2);  sc_uint<12> addr12 = a_13_2;    ADDR.write(addr12);      DI00.write(0);   DI01.write(0);   DI02.write(0);   DI03.write(0);   DI04.write(0);   DI05.write(0);   DI06.write(0);   DI07.write(0);     bool e = (en.read()[0]!=0);  EN.write(e);  WE.write(0);    SSR.write(0);  CLK.write(clk.read());}void BROM16K_WRAPPER::out(){  sc_bv<32> data32;  sc_bv<4>  d0, d1, d2, d3, d4, d5, d6, d7;   // gather bytes of the word from memory blocks  d0 = DO00.read();  d1 = DO01.read();  d2 = DO02.read();  d3 = DO03.read();  d4 = DO04.read();  d5 = DO05.read();  d6 = DO06.read();  d7 = DO07.read();    data32 = (d0, d1, d2, d3, d4, d5, d6, d7);    dout.write( data32 );  memwait.write( false );}////////////////////////////////////////////////////////////////////////////////////////////////////void BROM16K_DBGWRAPPER::in(){    bool clk = CLK.read();    dCLK.write(clk);    // discard two least significant bits of the address  sc_uint<12> addr = ADDR.read().range(13,2);    dADDR.write(addr);    // split the input data between the memory blocks  sc_int<32> dwr = DI.read();  sc_int<4> dwr0 = dwr.range(31,28), dwr1 = dwr.range(28,24), dwr2 = dwr.range(23,20), dwr3 = dwr.range(19,16),    dwr4 = dwr.range(15,12), dwr5 = dwr.range(11,8), dwr6 = dwr.range(7,4), dwr7 = dwr.range(3,0);  dDI00.write(dwr0); dDI01.write(dwr1); dDI02.write(dwr2); dDI03.write(dwr3);   dDI04.write(dwr4); dDI05.write(dwr5); dDI06.write(dwr6); dDI07.write(dwr7);   bool en = EN.read(), we = WE.read();  dEN.write(en);  dWE.write(we);  dSSR.write(0);}void BROM16K_DBGWRAPPER::out(){  sc_int<32> data32;  sc_int<4>  d0, d1, d2, d3, d4, d5, d6, d7;   // gather bytes of the word from memory blocks  d0 = dDO00.read();  d1 = dDO01.read();  d2 = dDO02.read();  d3 = dDO03.read();  d4 = dDO04.read();  d5 = dDO05.read();  d6 = dDO06.read();  d7 = dDO07.read();    data32 = (d0, d1, d2, d3, d4, d5, d6, d7);    DO.write( data32 );}#ifndef VERILOGvoid BROM16K::mem_init(const char *filename, int size){  vector<sc_int<4>* > v;  v.push_back(bram00->memory);  v.push_back(bram01->memory);  v.push_back(bram02->memory);  v.push_back(bram03->memory);  v.push_back(bram04->memory);  v.push_back(bram05->memory);  v.push_back(bram06->memory);  v.push_back(bram07->memory);  init_memory(&v,size,filename);}void BROM16K::mem_dump(const char *filename, int size){  vector<sc_int<4>* > v;  v.push_back(bram00->memory);  v.push_back(bram01->memory);  v.push_back(bram02->memory);  v.push_back(bram03->memory);  v.push_back(bram04->memory);  v.push_back(bram05->memory);  v.push_back(bram06->memory);  v.push_back(bram07->memory);  dump_memory(&v,size,filename);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -