source: ReferenceDesigns/w3_802.11/sysgen/wlan_phy_rx_pmd/blackboxes/vb_decoder_top_config.m

Last change on this file was 4394, checked in by murphpo, 9 years ago

First Rx PHY with 11n SISO support; copying MAC core with new name (no _dcf)

File size: 4.7 KB
Line 
1
2function vb_decoder_top_config(this_block)
3
4  % Revision History:
5  %
6  %   13-Jul-2013  (13:25 hours):
7  %     Original code was machine generated by Xilinx's System Generator after parsing
8  %     S:\work\wlan\sysgen\wlan_phy_rx\decoder_dev\blackboxes\vb_decoder_top.v
9  %
10  %
11
12  this_block.setTopLevelLanguage('Verilog');
13
14  this_block.setEntityName('vb_decoder_top');
15
16  % System Generator has to assume that your entity  has a combinational feed through;
17  %   if it  doesn't, then comment out the following line:
18  this_block.tagAsCombinational;
19
20  this_block.addSimulinkInport('llr_b1');
21  this_block.addSimulinkInport('llr_b0');
22  this_block.addSimulinkInport('vin');
23  this_block.addSimulinkInport('nrst');
24  this_block.addSimulinkInport('packet_start');
25  this_block.addSimulinkInport('packet_end');
26  this_block.addSimulinkInport('early_trace1');
27  this_block.addSimulinkInport('early_trace2');
28
29  this_block.addSimulinkOutport('done');
30  this_block.addSimulinkOutport('vout');
31  this_block.addSimulinkOutport('dout_in_byte');
32
33  done_port = this_block.port('done');
34  done_port.setType('UFix_1_0');
35  done_port.useHDLVector(false);
36  vout_port = this_block.port('vout');
37  vout_port.setType('UFix_1_0');
38  vout_port.useHDLVector(false);
39  dout_in_byte_port = this_block.port('dout_in_byte');
40  dout_in_byte_port.setType('UFix_8_0');
41
42  % -----------------------------
43  if (this_block.inputTypesKnown)
44    % do input type checking, dynamic output type and generic setup in this code block.
45
46    if (this_block.port('nrst').width ~= 1);
47      this_block.setError('Input data type for port "nrst" must have width=1.');
48    end
49
50    this_block.port('nrst').useHDLVector(false);
51
52    if (this_block.port('packet_start').width ~= 1);
53      this_block.setError('Input data type for port "packet_start" must have width=1.');
54    end
55
56    this_block.port('packet_start').useHDLVector(false);
57
58    if (this_block.port('packet_end').width ~= 1);
59      this_block.setError('Input data type for port "packet_end" must have width=1.');
60    end
61
62    this_block.port('packet_end').useHDLVector(false);
63
64    if (this_block.port('vin').width ~= 1);
65      this_block.setError('Input data type for port "vin" must have width=1.');
66    end
67
68    this_block.port('vin').useHDLVector(false);
69
70    % (!) Port 'llr_b1' appeared to have dynamic type in the HDL -- please add type checking as appropriate;
71
72    % (!) Port 'llr_b0' appeared to have dynamic type in the HDL -- please add type checking as appropriate;
73
74    if (this_block.port('early_trace1').width ~= 1);
75      this_block.setError('Input data type for port "early_trace1" must have width=1.');
76    end
77
78    this_block.port('early_trace1').useHDLVector(false);
79
80    if (this_block.port('early_trace2').width ~= 1);
81      this_block.setError('Input data type for port "early_trace2" must have width=1.');
82    end
83
84    this_block.port('early_trace2').useHDLVector(false);
85
86  end  % if(inputTypesKnown)
87  % -----------------------------
88
89  % -----------------------------
90   if (this_block.inputRatesKnown)
91     setup_as_single_rate(this_block,'clk','ce')
92   end  % if(inputRatesKnown)
93  % -----------------------------
94
95    % (!) Set the inout port rate to be the same as the first input
96    %     rate. Change the following code if this is untrue.
97    uniqueInputRates = unique(this_block.getInputRates);
98
99  % Add addtional source files as needed.
100  %  |-------------
101  %  | Add files in the order in which they should be compiled.
102  %  | If two files "a.vhd" and "b.vhd" contain the entities
103  %  | entity_a and entity_b, and entity_a contains a
104  %  | component of type entity_b, the correct sequence of
105  %  | addFile() calls would be:
106  %  |    this_block.addFile('b.vhd');
107  %  |    this_block.addFile('a.vhd');
108  %  |-------------
109
110  %    this_block.addFile('');
111  %    this_block.addFile('');
112  this_block.addFile('blackboxes/vb_decoder_top.v');
113  this_block.addFile('blackboxes/vb_decoder_rest.v');
114
115return;
116
117
118% ------------------------------------------------------------
119
120function setup_as_single_rate(block,clkname,cename) 
121  inputRates = block.inputRates; 
122  uniqueInputRates = unique(inputRates); 
123  if (length(uniqueInputRates)==1 & uniqueInputRates(1)==Inf) 
124    block.addError('The inputs to this block cannot all be constant.'); 
125    return; 
126  end 
127  if (uniqueInputRates(end) == Inf) 
128     hasConstantInput = true; 
129     uniqueInputRates = uniqueInputRates(1:end-1); 
130  end 
131  if (length(uniqueInputRates) ~= 1) 
132    block.addError('The inputs to this block must run at a single rate.'); 
133    return; 
134  end 
135  theInputRate = uniqueInputRates(1); 
136  for i = 1:block.numSimulinkOutports
137     block.outport(i).setRate(theInputRate); 
138  end 
139  block.addClkCEPair(clkname,cename,theInputRate); 
140  return; 
141
142% ------------------------------------------------------------
143
Note: See TracBrowser for help on using the repository browser.