The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Mar 29th, 2024, 4:44am
Pages: 1
Send Topic Print
Writing the output data to a file (Read 2847 times)
vivekrc
New Member
*
Offline



Posts: 6

Writing the output data to a file
Nov 13th, 2004, 5:02pm
 

Hi,

I have written a code in Verilog AMS and i would like to know how to write the output data to a file from Verilog AMS, so that i can open it in Matlab.I would like to compute the FFT of the output data. My main aim is to determine the signal to noise ratio, spurious free dynamic range and total harmonic distortion  from the  frequency response.
/*This code is used to compute the ADC */
`include "constants.vams"
`include "disciplines.vams"

module logelec (out3,out2,out1,out0,bit3,bit2,bit1,bit0 );
output out3,out2,out1,out0;
input bit3,bit2,bit1,bit0;
electrical out3,out2,out1,out0;

logic bit3,bit2,bit1,bit0;
parameter real td = 0;
parameter real tt = 0;
real outscaled1,outscaled2,outscaled3,outscaled4;
integer mychannel;
analog begin

outscaled1=bit3;
outscaled2=bit2;
outscaled3=bit1;
outscaled4=bit0;
V(out3) <+ 1.2* outscaled1 ;
V(out2) <+ 1.2* outscaled2 ;
V(out1) <+ 1.2* outscaled3 ;
V(out0) <+ 1.2* outscaled4 ;
mychannel=$fopen("%C:r.freq_dat") ;

end

endmodule

I would be grateful to anyone who could help me solve this problem.
I am also interested to know whether there is a direct tool in Verilog AMS to compute the FFT of digitized signal .
I know the same could be done in Cadence using the Calculator Tool of the Analog Environment which is given by
dft((((VT("/bit0")+(VT("/bit1")*2)+(VT("/bit2")*4)+(VT("/bit3")*8))/45+0.4)1e-0.
8 6.12e-0.8 128 "Rectangular"  
is a 128 point Rectangular window FFT  for a transient response from 10ns to 61.2ns.I have done this successful in Cadence using transistor level design for a flash ADC.
I also read the Verilog AMS language reference manual, and couldnt find anything which deals with FFT.
Thanks

Vivek
Back to top
 
 
View Profile   IP Logged
August West
Community Member
***
Offline

I'll get up and fly
away

Posts: 71

Re: Writing the output data to a file
Reply #1 - Nov 14th, 2004, 11:51pm
 
It sounds like what you need is a periodic sampler. One is given below ...
Code:
// Self-clocked (periodic) sampler
`include “disciplines.vams”
module sampler (ps, ns);
	parameter real period=1 from (0:inf);										// sampling period (s)
	parameter real toff=0 from [0:inf);										// offset time for sampling (s)
	input ps, ns; voltage ps, ns;										// input port
	integer file;
	analog begin
		// Open the output file
		@(initial_step)
			file = $fopen("sampler-data");
		// Sample the input
		@(timer(toff, period))
			$fstrobe(file, “%g\t%g”, $abstime, V(ps,ns));
		// Close the output file
		@(final_step)
			$fclose(file);
	end
endmodule 



This module will sample a signal at a fixed rate and write the values to a file. The file can then be opened by Matlab and processed.

-August
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.