2 Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:04:09 2011
\r
3 Licensed to :LIMITED EVALUATION USER:
\r
6 EVALUATION COPY! DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS.
\r
8 #include "SPI_controler.sc"
\r
12 template<typename T> int _nsl_readmem(T array[], const char *file, int start, int end, int sft) ;
\r
13 sc_clock m_clock("m_clock",10, SC_NS, 0.5,0, SC_NS, false);
\r
14 sc_signal<bool> p_reset;
\r
15 sc_signal<sc_uint<8> > send_data;
\r
16 sc_signal<sc_uint<8> > resv_data;
\r
18 spi_controler spi_controler("spi_controler");
\r
20 static int ctrl_clock=0;
\r
21 SC_MODULE (c_clock) {
\r
22 sc_in<bool> m_clock;
\r
25 if(ctrl_clock<2) p_reset=1;
\r
29 SC_METHOD(do_reset);
\r
30 sensitive << m_clock.pos();
\r
34 template<typename T> int _nsl_readmem(T array[], const char *file, int start, int end, int sft) {
\r
37 int i,bit,c,lastch,incomm;
\r
38 if((txt=fopen(file,"r"))==NULL) {
\r
45 while((c=fgetc(txt))!=EOF) {
\r
48 if(c=='\n') incomm=0;
\r
51 if(c=='#') {incomm++; continue;}
\r
52 if(c=='_' || c=='\r' ) continue;
\r
53 if(!lastch && (c==' ' || c=='\t' || c=='\n') ) continue;
\r
56 if(sft==4 && ch<6) {
\r
58 data = (data + ch + 10);
\r
60 else if(sft==4 && ch+32 < 6) {
\r
62 data = (data + ch + 32 + 10);
\r
64 else if(sft==4 && ch+49 < 10) {
\r
66 data = (data + ch + 49);
\r
68 else if(sft==1 && ch+49 < 2) {
\r
70 data = (data + ch + 49);
\r
75 if(addr>=end) break;
\r
84 void _nsl_hook(char *file, int line, int attrib, const char *name) {}
\r
86 #include "SPI_controler_top.h"
\r
87 SPIControlerTop::SPIControlerTop()
\r
90 tf = sc_create_vcd_trace_file("spi_controler");
\r
91 tf->set_time_unit(1, SC_NS);
\r
92 sc_trace(tf,spi_controler.send_data,"spi_controler.send_data");
\r
93 sc_trace(tf,spi_controler.resv_data,"spi_controler.resv_data");
\r
94 sc_trace(tf,spi_controler.MOSI,"spi_controler.MOSI");
\r
95 sc_trace(tf,spi_controler.MISO,"spi_controler.MISO");
\r
96 sc_trace(tf,spi_controler.SS,"spi_controler.SS");
\r
97 sc_trace(tf,spi_controler.SCLK,"spi_controler.SCLK");
\r
98 sc_trace(tf,spi_controler.send,"spi_controler.send");
\r
99 sc_trace(tf,spi_controler.read_MISO,"spi_controler.read_MISO");
\r
100 sc_trace(tf,spi_controler.write_MOSI,"spi_controler.write_MOSI");
\r
101 sc_trace(tf,spi_controler.p_reset,"spi_controler.p_reset");
\r
102 sc_trace(tf,spi_controler.m_clock,"spi_controler.m_clock");
\r
103 sc_trace(tf,spi_controler.output_data,"spi_controler.output_data");
\r
104 sc_trace(tf,spi_controler.input_data,"spi_controler.input_data");
\r
105 sc_trace(tf,spi_controler.work_flg,"spi_controler.work_flg");
\r
106 sc_trace(tf,spi_controler.SS_reg,"spi_controler.SS_reg");
\r
107 sc_trace(tf,spi_controler.SCLK_reg,"spi_controler.SCLK_reg");
\r
108 sc_trace(tf,spi_controler.MOSI_reg,"spi_controler.MOSI_reg");
\r
109 sc_trace(tf,spi_controler.MISO_reg,"spi_controler.MISO_reg");
\r
110 sc_trace(tf,spi_controler._reg_0,"spi_controler._reg_0");
\r
111 sc_trace(tf,spi_controler._reg_1,"spi_controler._reg_1");
\r
112 sc_trace(tf,spi_controler._reg_2,"spi_controler._reg_2");
\r
113 sc_trace(tf,spi_controler._reg_3,"spi_controler._reg_3");
\r
114 sc_trace(tf,spi_controler._reg_4,"spi_controler._reg_4");
\r
115 sc_trace(tf,spi_controler._reg_5,"spi_controler._reg_5");
\r
116 sc_trace(tf,spi_controler._reg_6,"spi_controler._reg_6");
\r
117 sc_trace(tf,spi_controler._reg_7,"spi_controler._reg_7");
\r
118 sc_trace(tf,spi_controler._reg_8,"spi_controler._reg_8");
\r
119 sc_trace(tf,spi_controler._reg_9,"spi_controler._reg_9");
\r
120 sc_trace(tf,spi_controler._reg_10,"spi_controler._reg_10");
\r
121 sc_trace(tf,spi_controler._reg_11,"spi_controler._reg_11");
\r
122 sc_trace(tf,spi_controler._reg_12,"spi_controler._reg_12");
\r
123 sc_trace(tf,spi_controler._reg_13,"spi_controler._reg_13");
\r
124 sc_trace(tf,spi_controler._reg_14,"spi_controler._reg_14");
\r
125 sc_trace(tf,spi_controler._reg_15,"spi_controler._reg_15");
\r
126 sc_trace(tf,spi_controler._reg_16,"spi_controler._reg_16");
\r
127 sc_trace(tf,spi_controler._net_17,"spi_controler._net_17");
\r
128 c_clock cclk("cclk");
\r
129 cclk.m_clock(m_clock);
\r
130 spi_controler.p_reset(p_reset);
\r
131 spi_controler.m_clock(m_clock);
\r
132 spi_controler.send_data(send_data);
\r
133 spi_controler.resv_data(resv_data);
\r
134 spi_controler.MOSI(MOSI);
\r
135 spi_controler.MISO(MISO);
\r
136 spi_controler.SS(SS);
\r
137 spi_controler.SCLK(SCLK);
\r
138 spi_controler.send(send_w);
\r
139 spi_controler.read_MISO(read_MISO_w);
\r
140 spi_controler.write_MOSI(write_MOSI_w);
\r
141 sc_start(10, SC_NS);
\r
144 SPIControlerTop::~SPIControlerTop()
\r
146 sc_close_vcd_trace_file(tf);
\r
149 void SPIControlerTop::nextStep()
\r
151 sc_start(100, SC_NS);
\r
154 void SPIControlerTop::reset()
\r
159 void SPIControlerTop::send()
\r
163 char SPIControlerTop::read_MISO()
\r
168 void SPIControlerTop::write_MOSI(char send_data)
\r