La Red de Conocimientos Pedagógicos - Currículum vitae - FPGA recopila múltiples canales de temperatura. Compré una placa de desarrollo FPGA con chip EP1C3T144C8. ¿Cómo escribir la programación Verilog?

FPGA recopila múltiples canales de temperatura. Compré una placa de desarrollo FPGA con chip EP1C3T144C8. ¿Cómo escribir la programación Verilog?

Primer archivo: ds18b20.v

`escala de tiempo 1ns/1ps

módulo ds18b20 (

clk, chipselect, read_n, // entrada

readdata, //salida

dio ); //entrada

entrada clk, chipelect, read_n;

salida [15 :0] readdata;

inout dio;

reg [31:0] ro=32'hbecc44cc;

reg [15:0] ri ;

reg [15:0] puchero;

reg [5:0] conteo;

reg [12:0] cnt;

reg dout;

cable clk781_25khz;

asignar clk781_25khz=count[5];

siempre @(posedge clk) count<=count+1 'b1 ;

siempre @(posedge clk781_25khz) cnt<=cnt+1'b1;

siempre @(posedge cnt[12]) puchero<=ri;

asignar readdata=(chipselect & ~read_n)? pout: 16'b0;

reg reset,lo, hi,rd

siempre @(posedge cnt[0] ) reset <=cnt[12]|cnt[10]|cnt[9];

siempre @(posedge cnt[0]) lo <=|cnt[5:1] ~cnt[10 ];

siempre @(posedge cnt[0]) hola <=&cnt[5:1] | ~cnt[10];

siempre @(posedge cnt[0]) rd < =cnt[3]|cnt[4]|cnt[5]|~cnt[10]|cnt[11]|~cnt[12];

siempre @(negedge lo or posedge cnt [12 ])

if (cnt[12]==1) ro<=32'hbecc44cc;

else {ro[30:0],dout} <= ro

siempre @(posedge rd) ri <= {dio,ri[15:1]};

asignar dio=reset&(hi|(lo&dout))?1'bz: 1' b0;

endmodule

Segundo archivo: ds18b20_hw.tcl

# Archivo TCL generado por Component Editor 11.0

# Lun 12 de diciembre 00 :54:43 CST 2011

# NO MODIFICAR

# +------------

-----------------------

# |

# | ds18b20 "ds18b20" v1.0

# | nulo 2011.12.12.00:54:43

# |

# |

# |

# | --------------------------

# +--------------- ------ -----------------------

# | solicitar paquete TCL desde ACDS 11.0

# |

el paquete requiere -exact sopc 11.0

# | ------ -------------

# +---------------------- ------ -------

# | módulo ds18b20

#

set_module_property NOMBRE ds18b20

set_module_property VERSIÓN 1.0

set_module_property INTERNAL false

set_module_property OPAQUE_ADDRESS_MAP true

set_module_property DISPLAY_NAME ds18b20

set_module_property TOP_LEVEL_HDL_FILE ds18b20.v

set_module_property TOP_LE VEL_HDL_MODULE ds18b20

set_module_property INSTANTIATE_IN_SYSTEM_MODULE true

set_module_property EDITABLE true

set_module_property ANALYZE_HDL TRUE

set_module_property STATIC_TOP_LEVEL_MODULE_NAME "ds18b20"

set_module_prop erty FIX_110_VIP_PATH false

#

# +----------------------- ----------- ----

# +-------------------- ---------

# | archivos

# |p>

add_file ds18b20.v {SIMULACIÓN DE SÍNTESIS}

# |

# + ----------------------------------

# +------ --------------------------

# | parámetros

# |

# |

# +--------------------- ------- -

# +-----------

--------------------------

# | mostrar elementos

#

# |

# +----------------------------------

# +-----------------------------------

# | reloj del punto de conexión

# |

add_interface reloj final

set_interface_property reloj clockRate 0

set_interface_property reloj HABILITADO verdadero

add_interface_port reloj clk clk Entrada 1

#

# +---------------------- -- ----------

# +-------------------------------- ---- -----

# | punto de conexión avalon_slave_0

# |p>

add_interface avalon_slave_0 final de avalon

set_interface_property avalon_slave_0 direcciónAlignment NATIVO

set_interface_property avalon_slave_0 direcciónUnidades PALABRAS

set_interface_property avalon_slave_0 asociadoReloj reloj

set_interface_property avalon_slave_0 asociadoRestablecer reloj_reset

set_interface_property avalon_slave_0 burstOnBurstBoundariesOnly false

set_interface_property avalon_slave_0 explicitAddressSpan 0

set_interface_property avalon_slave_0 holdTime 0

set_interface_property avalon_slave_0 isMemoryDevice false

set_interface_property avalon_slave_0 isNonVolatileStorage false

set_interface_property avalon_esclavo_0 linewrapBursts false

set_interface_property avalon_slave_0 MaximumPendingReadTransactions 0

set_interface_property avalon_slave_0 printableDevice false

set_interface_property avalon_slave_0 readLatency 0

set_interface_property avalon_slave_0 read

WaitTime 1

set_interface_property avalon_slave_0 setupTime 0

set_interface_property avalon_slave_0 timingUnits Cycles

set_interface_property avalon_slave_0 writeWaitTime 0

set_interface_property avalon_slave_0 ENABLED true

add_interface_port avalon_slave_0 chipselect chipselect Entrada 1

add_interface_port avalon_slave_0 read_n read_n Entrada 1

add_interface_port avalon_slave_0 readdata readdata Salida 16

#

# +-----------------------------------

# +--- --------------------------------

# | punto de conexión conduit_end

># |

add_interface conduit_end conduit end

set_interface_property conduit_end ENABLED true

add_interface_port conduit_end dio export Bidir 1

#

# +----------------------------------

Lo anterior dos Cada archivo se completa en quartus 11 y el DS18B20 se documenta como una IP.

A continuación: conecte esta IP al bus Avalon, lea directamente el entero de 16 bits y luego configure la temperatura de acuerdo con el manual de datos. Simplemente tradúzcalo a contenido comprensible.