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

Last change on this file was 6193, checked in by murphpo, 6 years ago

Fixing comments

File size: 3.3 KB
Line 
1
2function bit_match_ram_config(this_block)
3
4  this_block.setTopLevelLanguage('Verilog');
5
6  this_block.setEntityName('bit_match_ram');
7
8  % System Generator has to assume that your entity  has a combinational feed through;
9  %   if it  doesn't, then comment out the following line:
10  this_block.tagAsCombinational;
11
12  this_block.addSimulinkInport('bit_in');
13  this_block.addSimulinkInport('bit_in_wr_en');
14  this_block.addSimulinkInport('addr_a');
15  this_block.addSimulinkInport('addr_b');
16
17  this_block.addSimulinkOutport('dout_a');
18  this_block.addSimulinkOutport('dout_b');
19
20  dout_a_port = this_block.port('dout_a');
21  dout_a_port.setType('UFix_32_0');
22  dout_b_port = this_block.port('dout_b');
23  dout_b_port.setType('UFix_32_0');
24
25  % -----------------------------
26  if (this_block.inputTypesKnown)
27    % do input type checking, dynamic output type and generic setup in this code block.
28
29    if (this_block.port('bit_in').width ~= 1);
30      this_block.setError('Input data type for port "bit_in" must have width=1.');
31    end
32
33    if (this_block.port('bit_in_wr_en').width ~= 1);
34      this_block.setError('Input data type for port "bit_in_wr_en" must have width=1.');
35    end
36
37    if (this_block.port('addr_a').width ~= 15);
38      this_block.setError('Input data type for port "addr_a" must have width=10.');
39    end
40
41    if (this_block.port('addr_b').width ~= 15);
42      this_block.setError('Input data type for port "addr_b" must have width=10.');
43    end
44
45  end  % if(inputTypesKnown)
46  % -----------------------------
47
48  % -----------------------------
49   if (this_block.inputRatesKnown)
50     setup_as_single_rate(this_block,'clk','ce')
51   end  % if(inputRatesKnown)
52  % -----------------------------
53
54    % (!) Set the inout port rate to be the same as the first input
55    %     rate. Change the following code if this is untrue.
56    uniqueInputRates = unique(this_block.getInputRates);
57
58
59  % Add addtional source files as needed.
60  %  |-------------
61  %  | Add files in the order in which they should be compiled.
62  %  | If two files "a.vhd" and "b.vhd" contain the entities
63  %  | entity_a and entity_b, and entity_a contains a
64  %  | component of type entity_b, the correct sequence of
65  %  | addFile() calls would be:
66  %  |    this_block.addFile('b.vhd');
67  %  |    this_block.addFile('a.vhd');
68  %  |-------------
69
70  %    this_block.addFile('');
71  %    this_block.addFile('');
72  this_block.addFile('blackboxes/bit_match_ram.v');
73  this_block.addFile('blackboxes/bit_match_ram_blkmemgen.ngc');
74return;
75
76
77% ------------------------------------------------------------
78
79function setup_as_single_rate(block,clkname,cename) 
80  inputRates = block.inputRates; 
81  uniqueInputRates = unique(inputRates); 
82  if (length(uniqueInputRates)==1 & uniqueInputRates(1)==Inf) 
83    block.addError('The inputs to this block cannot all be constant.'); 
84    return; 
85  end 
86  if (uniqueInputRates(end) == Inf) 
87     hasConstantInput = true; 
88     uniqueInputRates = uniqueInputRates(1:end-1); 
89  end 
90  if (length(uniqueInputRates) ~= 1) 
91    block.addError('The inputs to this block must run at a single rate.'); 
92    return; 
93  end 
94  theInputRate = uniqueInputRates(1); 
95  for i = 1:block.numSimulinkOutports
96     block.outport(i).setRate(theInputRate); 
97  end 
98  block.addClkCEPair(clkname,cename,theInputRate); 
99  return; 
100
101% ------------------------------------------------------------
102
Note: See TracBrowser for help on using the repository browser.