Interfaces.bsv
上传用户:aoptech
上传日期:2014-09-22
资源大小:784k
文件大小:3k
源码类别:

3G开发

开发平台:

Others

  1. // The MIT License
  2. //
  3. // Copyright (c) 2006 Nirav Dave (ndave@csail.mit.edu)
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy
  6. // of this software and associated documentation files (the "Software"), to deal
  7. // in the Software without restriction, including without limitation the rights
  8. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. // copies of the Software, and to permit persons to whom the Software is
  10. // furnished to do so, subject to the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be included in
  13. // all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. // THE SOFTWARE.
  22. import DataTypes::*;
  23. interface ConvEncoder#(type n, type m);
  24.    //inputs
  25.    method Action encode_fromController(Header#(n) fc);
  26.    method Action encode_fromScrambler (RateData#(n) fs);
  27.       
  28.    //outputs
  29.    method ActionValue#(RateData#(m))   getOutput(); 
  30. endinterface
  31. interface Scrambler#(type n);
  32.    //inputs
  33.    method Action fromControl(RateData#(n) x);
  34.    
  35.       //outputs
  36.    method ActionValue#(RateData#(n))  toEncoder(); 
  37. endinterface
  38. interface Interleaver#(type n, type m );
  39.    //inputs
  40.    method Action fromEncoder(RateData#(n) txVec);
  41.    //outputs
  42.    method ActionValue#(RateData#(m))       toMapper(); 
  43. endinterface
  44. interface Mapper#(type n,  type m);
  45.    //inputs
  46.    method Action fromInterleaver(RateData#(n) txVec);
  47.    //outputs
  48.    method ActionValue#(MsgComplexFVec#(m))       toIFFT(); 
  49. endinterface
  50. interface IFFT#(type n);
  51.    //inputs
  52.    method Action                   fromMapper(MsgComplexFVec#(n) x);
  53.    //outputs
  54.    method ActionValue#(MsgComplexFVec#(n))       toCyclicExtender(); 
  55. endinterface
  56. interface CyclicExtender#(type n, type m);
  57.    //inputs
  58.    method Action fromIFFT(MsgComplexFVec#(n) x);
  59.    //outputs
  60.    method ActionValue#(MsgComplexFVec#(m)) toAnalogTX(); 
  61. endinterface
  62. interface Controller#(type inN, type hdrN, type dataN);
  63.    //inputs
  64.    method Action getFromMAC(TXMAC2ControllerInfo x);
  65.    method Action getDataFromMAC(Data#(inN) x); 
  66.    //outputs
  67.    method ActionValue#(Header#(hdrN))            getHeader();
  68.    method ActionValue#(RateData#(dataN))           getData();
  69. endinterface
  70. interface Transmitter#(type inN, type out);
  71.    method Action getFromMAC(TXMAC2ControllerInfo x);
  72.    method Action getDataFromMAC(Data#(inN) x); 
  73.    method ActionValue#(MsgComplexFVec#(out)) toAnalogTX();
  74. endinterface