module: pattern_generator
description: 
parameters: int dwa_en  
inputs:  double_interp clk
outputs:  int out0, int out1
             int out2, int out3
             int out4, int out5
             int out6, int out7
classes:  
  EdgeDetect clk_edge()
  IntVector dac_vec()
  List list1()
static_variables:  
  int code_in
  int j
  int dwa_ptr
  int dwa_ptr_neg
init:  
  dac_vec.set_length(8);
  int i;
  for (i = 0; i < 8; i++)
  {
    dac_vec.set_elem(i,0);
  }
  list1.load("data_values.txt");
end:  
code:  
if (clk_edge.inp(clk))
{
  //read in from list file, loop around when reach end of list
  code_in = floor(0.5+list1.read());

  for (j=0;j<8;j++)
  {
     if(dwa_en)
     {
	if(code_in > 0)
	{
	   dac_vec.set_elem(dwa_ptr,1);
	   dwa_ptr++;
	   dwa_ptr = dwa_ptr%8;
	   dwa_ptr_neg = dwa_ptr;
	}
	else
	{
	   dac_vec.set_elem(dwa_ptr_neg,0);
 	   dwa_ptr_neg++;
	   dwa_ptr_neg = dwa_ptr_neg%8;
	}
     }
     else 
     {
	if(code_in > 0)
	  dac_vec.set_elem(j,1);
	else
	  dac_vec.set_elem(j,0);
     }
     code_in--;
  }   
  out7 = dac_vec.get_elem(7);
  out6 = dac_vec.get_elem(6);
  out5 = dac_vec.get_elem(5);
  out4 = dac_vec.get_elem(4);
  out3 = dac_vec.get_elem(3);
  out2 = dac_vec.get_elem(2); 
  out1 = dac_vec.get_elem(1);
  out0 = dac_vec.get_elem(0);
}

