Drafts

[ Home ] [ Back ]

Tutorial: ADC a 8 bit

Nella cartella di lavoro creare:

  • Il file hdl.var
define WORK worklib
include $CDS_INST_DIR/tools/inca/files/hdl.var
  • Il file cds.lib
define worklib /users/panati/projects/ALICE/ITS/syn_tj/netlist_in/worklib
include $CDS_INST_DIR/tools/inca/files/cds.lib
  • Un file di codice Verilog-AMS con estensione adc.vams
`include "disciplines.vams"
`timescale 1ns / 1ps

	module adc (out, in, clk);
		parameter integer bits = 8 from [1:24];

	// resolution (bits)
		parameter real fullscale = 1.0;

	// input range is from 0 to fullscale (V)
		parameter real td = 0;

	// delay from clock to output (ns)
		input in, clk;
		output out;
		voltage in;
		reg [0:bits-1] out;
		reg over;
		real sample, midpoint;
		integer i;

	always @(posedge clk) begin
		sample = V(in);
		midpoint = fullscale/2.0;
		for (i = bits - 1; i >= 0; i = i - 1) begin
			over = (sample > midpoint);
			if (over)
			sample = sample - midpoint;
			sample = 2.0*sample;
			out[i] <= #(td) over;
		end
		end
	endmodule
  • Un file di test bench Verilog-AMS con estensione tb_adc.vams
`timescale 10ns / 10ps
`include "disciplines.vams"
	module testbench ();
		electrical gnd;
		ground gnd;
		reg clk;
		wire [0:7] out;
		integer ii;
		reg [0:7] plot_out;
		initial clk=0;
		always #1 clk=~clk;
		always @(out) for (ii=0; ii<8; ii=ii+1) plot_out[ii] <= out[7-ii];
		adc adc0 (out, in, clk);
		vsource #(.type("sine"), .ampl(0.5), .dc(0.5), .freq(1M)) v0 (in, gnd);
	endmodule
  • Un file di Connect Rules con estensione connectrules.vams
`include "disciplines.vams"
	connectrules my_connectrules;
	connect electrical, voltage resolveto electrical;
	endconnectrules
  • Un file di controllo per la simulazione con estensione run.scs
*
transient tran stop=100us
  • Un file di run con estensione run.tcl
database -open waves -into waves.shm -default
probe -create testbench -depth all -shm -waveform
run 100us
exit

:?: Come funzionano questi files?

:!: Per il linguaggio Verilog-AMS vedi i seguenti links:

:!: Per il linguaggio Verilog-A vedi i seguenti links:

:!: Per il linguaggio Verilog-D vedi i seguenti links:

:!: Per il linguaggio VHDL-AMS vedi i seguenti links:

Aprire NCLaunch e abilitare nella casella “Filters” le estensioni .vams digitando *.vams:

IMMAGINE 01

Nella Console Window digitare:

nclaunch>  ncvlog -ams -work worklib connectrules.vams
nclaunch>  ncvlog -ams adc.vams
nclaunch>  ncvlog -ams tb_adc.vams
nclaunch>  ncelab testbench my_connectrules -timescale 10ps/1ps
nclaunch>  ncsim -GUI testbench -messages -analogcontrol run.scs -input run.tcl

IMMAGINE 02

Si aprono le seguenti finestre:

IMMAGINE 03

IMMAGINE 04

IMMAGINE 05

IMMAGINE 06

IMMAGINE 07

… Done! :-)

:!: LINK ALLE IMMAGINI: http://ge.tt/9ej58zD1