OpenCores
URL https://opencores.org/ocsvn/ds1621/ds1621/trunk

Subversion Repositories ds1621

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /ds1621
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

/trunk/tb_ds1621.sv
0,0 → 1,125
// regs: DS1621 Temperature Sensor
 
`define DS1621_CODE 4'h9
`define DS1621_ADDR 3'b001
 
`define DS1621_WROP 1'b0
`define DS1621_RDOP 1'b1
 
// Defined in the model
`ifndef DS1621_STOP
`define DS1621_STOP 8'h22
`define DS1621_TH 8'hA1
`define DS1621_TL 8'hA2
`define DS1621_CNT 8'hA8
`define DS1621_SLP 8'hA9
`define DS1621_TMP 8'hAA
`define DS1621_CFG 8'hAC
`define DS1621_STRT 8'hEE
`endif
 
$display("--DS1621 test 01 begin-->");
board_temp = 20.0; // set board temperature
 
$display("----DS1621 sending CFG=03, TH=16'h2800, TL=16'h0A00");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_CFG, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 0, 8'h63, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TH, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 0, 8'h28, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 0, 8'h00, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TL, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 0, 8'h0A, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 1, 8'h00, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
$display("----DS1621 sending done");
 
$display("----DS1621 reading TH");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TH, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 TH = %0h", g_logic_16);
 
board_temp = 25.5; // set board temperature
 
$display("----DS1621 start TMP conversion");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 1, `DS1621_STRT, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
#2_000_000 // conversion time is truncated on the board
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_CFG, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 1, g_logic_8 ); if ( g_logic_8[7] == 0 ) $display("--DS1621: iic__read, TCNV IS IN PROGRESS = %h", g_logic_8[7] );
//
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TMP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 T=25.5*C, expecting 1980, TMP = %0h", g_logic_16);
 
board_temp = -13.0; // set board temperature
 
$display("----DS1621 start TMP conversion");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 1, `DS1621_STRT, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
#2_000_000 // conversion time is truncated on the board
//
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TMP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 T=-13.0*C, expecting F300, TMP = %0h", g_logic_16);
 
board_temp = -13.5; // set board temperature
 
$display("----DS1621 start TMP conversion");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 1, `DS1621_STRT, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
#2_000_000 // conversion time is truncated on the board
//
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TMP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 T=-13.5*C, expecting F380, TMP = %0h", g_logic_16);
 
board_temp = 130.0; // set board temperature
 
$display("----DS1621 start TMP conversion");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 1, `DS1621_STRT, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
#2_000_000 // conversion time is truncated on the board
//
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TMP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 T=130.0*C, expecting 7D00, TMP = %0h", g_logic_16);
 
board_temp = -60.0; // set board temperature
 
$display("----DS1621 start TMP conversion");
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 1, `DS1621_STRT, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
#2_000_000 // conversion time is truncated on the board
//
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_TMP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_RDOP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic__read( 0, g_logic_8 ); g_logic_16[15:8]=g_logic_8;
iic__read( 1, g_logic_8 ); g_logic_16[7:0] =g_logic_8;
$display("----DS1621 T=-60.0*C, expecting C900, TMP = %0h", g_logic_16);
// THF, TLF reset
iic_ctlop( `DS1621_CODE, `DS1621_ADDR, `DS1621_WROP, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
iic_write( 0, `DS1621_CFG, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
iic_write( 1, 8'h03, bit_status ); if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
 
$display("--DS1621 test 01 end--<\n");

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.