Red de conocimiento del abogados - Respuesta jurídica de la empresa - 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) countlt;=count 1' b1;

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

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

asignar readdata=(chipselect amp; ~read_n)? puchero: 16'b0;

reg reset, lo, hola, rd

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

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

siempre @(posedge cnt[0]) hola lt;=amp;cnt[5:1] ~cnt[10];

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

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

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

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

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

asignar dio=resetamp;(hi|(loamp ;dout ))?1'bz: 1'b0;

endmodule

Segundo archivo: ds18b20_hw.tcl

# Archivo TCL generado por el editor de componentes

11.0

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

# NO MODIFICAR

# ------------ - -----------------------

# |

# | ds18b20 "ds18b20" v1.0

# | nulo 2011.12.12.00:54:43

# |

# | v

# |

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

# ------------- -- ---------------------

# | solicitar paquete TCL desde ACDS 11.0

#

paquete requiere -exact sopc 11.0

# |p>

# ----------------------- --- ----------

# ----------------------- --- ---

# | módulo ds18b20

# |p>

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_LEVEL_HD L_MODULE ds1 8b20

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_property FIX _110_VIP_PATH falso

# |p>

# ------------------------------- ---

# ----------------------------------

# | archivos

# |

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

#

# ---

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

# ---------- --------------------------

# | parámetros

#

# |

# ----------------------------------

# ----------------------------------

# | mostrar elementos

# |

# | ---------

# ------------------------------- -- --

# | reloj del punto de conexión

# |p>

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

#

add_interface avalon_slave_0 avalon end

set_interface_property avalon_slave_0 direcciónAlineación 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_esclavo_0 isNonVolatileStorage false

set_interface_property

avalon_slave_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 Hora 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 chipelect 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 final del conducto

set_interface_property conduit_end ENABLED true

add_interface_port conduit_end dio export Bidir 1

#

# ----------------------------------

Los dos archivos anteriores se completaron en quartus 11, escrito como una IP para DS18B20.

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