OpenCores
URL https://opencores.org/ocsvn/cic/cic/trunk

Subversion Repositories cic

[/] [cic/] [trunk/] [header/] [downsample.h] - Rev 2

Compare with Previous | Blame | View Log

#define M 2
 
SC_MODULE(downsample)
{
	sc_in<bool> 	CLR;
	sc_in<bool> 	CLK;
	sc_in<double> 	samplesIN;
	sc_out<double> 	sampleOUT;
	sc_out<bool> 	SCLK;
 
	sc_signal<double> reg[M];
 
	int count, scount;
 
	SC_CTOR(downsample)
	{
		SC_METHOD(lifo);
			sensitive << CLK.pos();
 
		SC_METHOD(output);
			sensitive << SCLK.pos();
 
		SC_METHOD(slowclock);
			sensitive << CLK.neg();				
	}
 
	void lifo()
	{
		if (CLR.read() == true)
		{
			count = 0;
		}
		else
		{
			if (CLK.posedge())
			{
				for (int i = 0; i < M; i++)
				{
					if (i == 0)
					{
						reg[i].write( samplesIN.read() );
					}
					else 
					{
						reg[i].write( reg[i-1] );
 
					}
				}
			}
		}
	}
 
	void slowclock()
	{
		if (CLR.read() == true)
		{
			scount = 0;
		}
		else
		{	
			if (CLK.negedge())
			{
				if (scount < M/2)
				{
					SCLK.write(1);
					scount++;
				}
				else if (scount < M-1)
				{
					SCLK.write(0);
					scount++;
				}
				else
				{
					SCLK.write(0);
					scount = 0;
				}
			}
		}
	}
 
	void output()
	{
		sampleOUT.write(reg[0].read());
	}
};
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.