OSDN Git Service

commit files
[oca1/test.git] / USB_Keybord_MAX3421E / src / SPI_controler_top.cpp
1 /*\r
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
4 */\r
5 /*\r
6  EVALUATION COPY!   DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS. \r
7 */\r
8 #include "SPI_controler.sc"\r
9 #include <stdio.h>\r
10 #include <stdlib.h>\r
11 #include <stdint.h>\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
17 \r
18 spi_controler spi_controler("spi_controler");\r
19 \r
20 static int ctrl_clock=0;\r
21 SC_MODULE (c_clock) {\r
22         sc_in<bool> m_clock;\r
23         void do_reset() {\r
24                 ctrl_clock++;\r
25                 if(ctrl_clock<2) p_reset=1;\r
26                 else p_reset=0;\r
27         }\r
28         SC_CTOR(c_clock) {\r
29                 SC_METHOD(do_reset);\r
30                 sensitive << m_clock.pos();\r
31         }\r
32 };\r
33 \r
34 template<typename T> int _nsl_readmem(T array[], const char *file, int start, int end, int sft) {\r
35         FILE *txt;\r
36         uint64_t addr,data;\r
37         int i,bit,c,lastch,incomm;\r
38         if((txt=fopen(file,"r"))==NULL) {\r
39                 return(1);\r
40         }\r
41         addr = start;\r
42         data =  0;\r
43         lastch=0;\r
44         incomm=0;\r
45         while((c=fgetc(txt))!=EOF) {\r
46                 unsigned int ch;\r
47                 if(incomm) {\r
48                         if(c=='\n') incomm=0;\r
49                         continue;\r
50                 }\r
51                 if(c=='#') {incomm++; continue;}\r
52                 if(c=='_' || c=='\r' ) continue;\r
53                 if(!lastch && (c==' ' || c=='\t' || c=='\n') ) continue;\r
54                 lastch=c;\r
55                 ch = c - 97;\r
56                 if(sft==4 && ch<6) {\r
57                         data=(data << sft);\r
58                         data = (data + ch + 10);\r
59                 }\r
60                 else if(sft==4 && ch+32 < 6) {\r
61                         data=(data << sft);\r
62                         data = (data + ch + 32 + 10);\r
63                 }\r
64                 else if(sft==4 && ch+49 < 10) {\r
65                         data=(data << sft);\r
66                         data = (data + ch + 49);\r
67                 }\r
68                 else if(sft==1 && ch+49 < 2) {\r
69                         data=(data << sft);\r
70                         data = (data + ch + 49);\r
71                 }\r
72                 else {\r
73                         array[addr] =  data;\r
74                         addr++;\r
75                         if(addr>=end) break;\r
76                         lastch=0;\r
77                         data=0;\r
78                         continue;\r
79                 }\r
80         }\r
81         fclose(txt);\r
82         return 0;\r
83 }\r
84 void _nsl_hook(char *file, int line, int attrib, const char *name) {}\r
85 \r
86 #include "SPI_controler_top.h"\r
87 SPIControlerTop::SPIControlerTop()\r
88 {\r
89         int stop;\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
142 }\r
143 \r
144 SPIControlerTop::~SPIControlerTop()\r
145 {\r
146         sc_close_vcd_trace_file(tf);\r
147 }\r
148 \r
149 void SPIControlerTop::nextStep()\r
150 {\r
151         sc_start(100, SC_NS);\r
152 }\r
153 \r
154 void SPIControlerTop::reset()\r
155 {\r
156         ctrl_clock = 0;\r
157 }\r
158 \r
159 void SPIControlerTop::send()\r
160 {\r
161 }\r
162 \r
163 char SPIControlerTop::read_MISO()\r
164 {\r
165         return 0;\r
166 }\r
167 \r
168 void SPIControlerTop::write_MOSI(char send_data)\r
169 {\r
170 }\r
171 \r