data_gen.cpp revision 12855
19850Sandreas.hansson@arm.com/***************************************************************************** 29850Sandreas.hansson@arm.com 39850Sandreas.hansson@arm.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 49850Sandreas.hansson@arm.com more contributor license agreements. See the NOTICE file distributed 59850Sandreas.hansson@arm.com with this work for additional information regarding copyright ownership. 69850Sandreas.hansson@arm.com Accellera licenses this file to you under the Apache License, Version 2.0 79850Sandreas.hansson@arm.com (the "License"); you may not use this file except in compliance with the 89850Sandreas.hansson@arm.com License. You may obtain a copy of the License at 99850Sandreas.hansson@arm.com 109850Sandreas.hansson@arm.com http://www.apache.org/licenses/LICENSE-2.0 119850Sandreas.hansson@arm.com 129850Sandreas.hansson@arm.com Unless required by applicable law or agreed to in writing, software 139850Sandreas.hansson@arm.com distributed under the License is distributed on an "AS IS" BASIS, 149850Sandreas.hansson@arm.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 159850Sandreas.hansson@arm.com implied. See the License for the specific language governing 169850Sandreas.hansson@arm.com permissions and limitations under the License. 179850Sandreas.hansson@arm.com 189850Sandreas.hansson@arm.com *****************************************************************************/ 199850Sandreas.hansson@arm.com 209850Sandreas.hansson@arm.com/***************************************************************************** 219850Sandreas.hansson@arm.com 229850Sandreas.hansson@arm.com data_gen.cpp -- 239850Sandreas.hansson@arm.com 249850Sandreas.hansson@arm.com Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 259850Sandreas.hansson@arm.com 269850Sandreas.hansson@arm.com *****************************************************************************/ 279850Sandreas.hansson@arm.com 289850Sandreas.hansson@arm.com/***************************************************************************** 299850Sandreas.hansson@arm.com 309850Sandreas.hansson@arm.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 319850Sandreas.hansson@arm.com changes you are making here. 329850Sandreas.hansson@arm.com 339850Sandreas.hansson@arm.com Name, Affiliation, Date: 349850Sandreas.hansson@arm.com Description of Modification: 359850Sandreas.hansson@arm.com 369850Sandreas.hansson@arm.com *****************************************************************************/ 379850Sandreas.hansson@arm.com 389850Sandreas.hansson@arm.com#include "common.h" 397768SN/A#include "add_chain.h" 407768SN/A 417768SN/A/******************************************************************************/ 429850Sandreas.hansson@arm.com/*************************** data_gen Function **********************/ 43/******************************************************************************/ 44 45SC_MODULE( DATA_GEN ) 46{ 47 SC_HAS_PROCESS( DATA_GEN ); 48 49 sc_in_clk clk; 50 51 /*** Input and Output Ports ***/ 52 const sc_signal<bool>& ready; 53 signal_bool_vector8& data; 54 sc_signal<int>& addr; 55 56 /*** Constructor ***/ 57 DATA_GEN ( sc_module_name NAME, 58 sc_clock& TICK_N, 59 const sc_signal<bool>& READY, 60 signal_bool_vector8& DATA, 61 sc_signal<int>& ADDR ) 62 63 : 64 ready (READY), 65 data (DATA), // 8 bits 66 addr (ADDR) 67 68 { 69 clk (TICK_N); 70 SC_CTHREAD( entry, clk.neg() ); 71 } 72 73 /*** Call to Process Functionality ***/ 74 void entry(); 75 76}; 77 78void 79DATA_GEN::entry() 80{ 81 while(true) { 82 83/** WAIT FOR POSEDGE OF ready **/ 84 85 do { wait(); } while (ready == 1); // Posedge ready 86 do { wait(); } while (ready == 0); 87 88/** CHECK TO SEE IF THE END OF MEMORY HAS BEEN REACHED **/ 89 90 if(addr.read() > LIMIT) { // if(addr > LIMIT) 91 break; 92 } 93 94/** WRITE VALUE OF MEMORY AT CURRENT ADDRESS TO data **/ 95 96 data.write(mem[addr.read()]); // data = mem[addr] 97 98/** INCREMENT addr BY 1 **/ 99 100 addr.write(addr.read() + 1); // addr = addr + 1 101 } 102 103} 104 105void 106f_DATA_GEN ( const char* NAME, 107 sc_clock& TICK, 108 const sc_signal<bool>& READY, 109 signal_bool_vector8& DATA, 110 sc_signal<int>& ADDR ) 111 112{ 113 new DATA_GEN(NAME, TICK, READY, DATA, ADDR); 114} 115 116