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

Subversion Repositories sockit_owm

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /sockit_owm
    from Rev 2 to Rev 3
    Reverse comparison

Rev 2 → Rev 3

/trunk/onewire.odt Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
trunk/onewire.odt Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/iverilog_gtkwave.scr =================================================================== --- trunk/iverilog_gtkwave.scr (revision 2) +++ trunk/iverilog_gtkwave.scr (nonexistent) @@ -1,14 +0,0 @@ -#!/bin/bash - -# cleanup first -rm onewire.out -rm onewire.vcd - -# compile the verilog sources (testbench and RTL) -iverilog -o onewire.out onewire_tb.v sockit_owm.v onewire_slave_model.v - -# run the simulation -vvp onewire.out - -# open the waveform and detach it -gtkwave onewire.vcd gtkwave.sav &
trunk/iverilog_gtkwave.scr Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/onewire.odg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/onewire.odg =================================================================== --- trunk/onewire.odg (revision 2) +++ trunk/onewire.odg (nonexistent)
trunk/onewire.odg Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/onewire_tb.v =================================================================== --- trunk/onewire_tb.v (revision 2) +++ trunk/onewire_tb.v (nonexistent) @@ -1,231 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// // -// Minimalistic 1-wire (onewire) master with Avalon MM bus interface // -// testbench // -// // -// Copyright (C) 2010 Iztok Jeras // -// // -////////////////////////////////////////////////////////////////////////////// -// // -// This RTL is free hardware: you can redistribute it and/or modify // -// it under the terms of the GNU Lesser General Public License // -// as published by the Free Software Foundation, either // -// version 3 of the License, or (at your option) any later version. // -// // -// This RTL is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with this program. If not, see . // -// // -////////////////////////////////////////////////////////////////////////////// - -`timescale 1ns / 1ps - -module onewire_tb; - -// system clock parameters -localparam real FRQ = 4_000_000; // 24MHz // realistic option -localparam real CP = 1*(10**9)/FRQ; // clock period - -localparam MTP_N = 7500; // divider number normal mode -localparam MTP_O = 750; // divider number overdrive mode - -localparam CDR_N = MTP_N / CP; // divider number normal mode -localparam CDR_O = MTP_O / CP; // divider number overdrive mode - -// onewire parameters -localparam OWN = 3; // number of ports - -// Avalon MM parameters -localparam AAW = 1; // address width -localparam ADW = 32; // data width -localparam ABW = ADW/8; // byte enable width - -// system_signals -reg clk; // clock -reg rst; // reset (asynchronous) -// Avalon MM interface -reg avalon_read; -reg avalon_write; -reg [AAW-1:0] avalon_address; -reg [ABW-1:0] avalon_byteenable; -reg [ADW-1:0] avalon_writedata; -wire [ADW-1:0] avalon_readdata; -wire avalon_waitrequest; -wire avalon_interrupt; - -// Avalon MM local signals -wire avalon_transfer; -reg [ADW-1:0] data; - -// onewire -wire [OWN-1:0] owr; // bidirectional -wire [OWN-1:0] owr_p; // output power enable from master -wire [OWN-1:0] owr_e; // output pull down enable from master -wire [OWN-1:0] owr_i; // input into master - -// request for a dumpfile -initial begin - $dumpfile("onewire.vcd"); - $dumpvars(0, onewire_tb); -end - -////////////////////////////////////////////////////////////////////////////// -// clock and reset -////////////////////////////////////////////////////////////////////////////// - -// clock generation -initial clk = 1'b1; -always #(CP/2) clk = ~clk; - -// reset generation -initial begin - rst = 1'b1; - repeat (2) @(posedge clk); - rst = 1'b0; -end - -////////////////////////////////////////////////////////////////////////////// -// Avalon write and read transfers -////////////////////////////////////////////////////////////////////////////// - -initial begin - // Avalon MM interface is idle - avalon_read = 1'b0; - avalon_write = 1'b0; - - // long delay to skip presence pulse - #1000_000; - - // generate a reset pulse - avalon_cycle (1, 0, 4'hf, 32'b00000010, data); - avalon_pulling (8); - // write '0' - avalon_cycle (1, 0, 4'hf, 32'b00000000, data); - avalon_pulling (8); - // write '1' - avalon_cycle (1, 0, 4'hf, 32'b00000001, data); - avalon_pulling (8); - - // switch to overdrive mode - - // generate a reset pulse - avalon_cycle (1, 0, 4'hf, 32'b00000110, data); - avalon_pulling (8); - // write '0' - avalon_cycle (1, 0, 4'hf, 32'b00000100, data); - avalon_pulling (8); - // write '1' - avalon_cycle (1, 0, 4'hf, 32'b00000101, data); - avalon_pulling (8); - - // test power supply - - // generate a delay pulse with power supply enabled - avalon_cycle (1, 0, 4'hf, 32'h00010003, data); - avalon_pulling (8); - - // test breaking a delay sequence with an idle transfer - - // generate a delay pulse and break it, before it finishes - repeat (10) @(posedge clk); - avalon_cycle (1, 0, 4'hf, 32'h00000003, data); - repeat (10) @(posedge clk); - avalon_cycle (1, 0, 4'hf, 32'h00000007, data); - - // wait a few cycles and finish - repeat (10) @(posedge clk); - $finish(); -end - -// wait for the onewire cycle completion -task avalon_pulling (input integer d); -begin - data = 32'h02; - while (data & 32'h02) begin - repeat (d) @ (posedge clk); - avalon_cycle (0, 0, 4'hf, 32'hxxxx_xxxx, data); - end -end endtask - -////////////////////////////////////////////////////////////////////////////// -// Avalon transfer cycle generation task -////////////////////////////////////////////////////////////////////////////// - -task automatic avalon_cycle ( - input r_w, // 0-read or 1-write cycle - input [AAW-1:0] adr, - input [ABW-1:0] ben, - input [ADW-1:0] wdt, - output [ADW-1:0] rdt -); -begin - $display ("Avalon MM cycle start: T=%10tns, %s address=%08x byteenable=%04b writedata=%08x", $time/1000.0, r_w?"write":"read ", adr, ben, wdt); - // start an Avalon cycle - avalon_read <= ~r_w; - avalon_write <= r_w; - avalon_address <= adr; - avalon_byteenable <= ben; - avalon_writedata <= wdt; - // wait for waitrequest to be retracted - @ (posedge clk); while (~avalon_transfer) @ (posedge clk); - // end Avalon cycle - avalon_read <= 1'b0; - avalon_write <= 1'b0; - // read data - rdt = avalon_readdata; - $display ("Avalon MM cycle end : T=%10tns, readdata=%08x", $time/1000.0, rdt); -end -endtask - -// avalon cycle transfer cycle end status -assign avalon_transfer = (avalon_read | avalon_write) & ~avalon_waitrequest; - -assign avalon_waitrequest = 1'b0; - -////////////////////////////////////////////////////////////////////////////// -// RTL instance -////////////////////////////////////////////////////////////////////////////// - -sockit_owm #( - .CDR_N (CDR_N), - .CDR_O (CDR_O), - .OWN (OWN) -) onewire_master ( - // system - .clk (clk), - .rst (rst), - // Avalon - .bus_read (avalon_read), - .bus_write (avalon_write), - .bus_writedata (avalon_writedata), - .bus_readdata (avalon_readdata), - .bus_interrupt (avalon_interrupt), - // onewire - .onewire_p (owr_p), - .onewire_e (owr_e), - .onewire_i (owr_i) -); - -// onewire -pullup onewire_pullup [OWN-1:0] (owr); - -genvar i; -generate for (i=0; i
trunk/iverilog_gtkwave.cmd Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/onewire_slave_model.v =================================================================== --- trunk/onewire_slave_model.v (revision 2) +++ trunk/onewire_slave_model.v (nonexistent) @@ -1,186 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// // -// 1-wire (owr) slave model // -// // -// Copyright (C) 2010 Iztok Jeras // -// // -////////////////////////////////////////////////////////////////////////////// -// // -// This RTL is free hardware: you can redistribute it and/or modify // -// it under the terms of the GNU Lesser General Public License // -// as published by the Free Software Foundation, either // -// version 3 of the License, or (at your option) any later version. // -// // -// This RTL is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with this program. If not, see . // -// // -////////////////////////////////////////////////////////////////////////////// - -`timescale 1us / 1ns - -module onewire_slave_model #( - // identification - parameter FAMILY_CODE = 8'h01, - parameter SERIAL_NUMBER = 48'hba98_7654_3210, - parameter CRC_CODE = 8'hff, - // time slot (min=15, typ=30, max=60) - parameter TS = 30 -)( - inout wire owr -); - -// commands -localparam Read_ROM = 8'h33; -localparam Search_ROM = 8'hf0; -localparam Overdrive_Skip_ROM = 8'h3C; - -// IO -reg pull; - -// status registers -reg [23:0] state; // chip state in ASCII -reg [23:0] cycle; // cycle status in ASCII -reg [7:0] cmd; // received command -reg od; // overdrive mode status -integer cnt; // transfer bit counter - -// data registers -reg [7:0] drx; -reg [7:0] dtx; - -// events -event transfer; -event clock; -event sample; -event reset; - -////////////////////////////////////////////////////////////////////////////// -// IO -////////////////////////////////////////////////////////////////////////////// - -assign owr = pull ? 1'b0 : 1'bz; - -////////////////////////////////////////////////////////////////////////////// -// events inside a cycle -////////////////////////////////////////////////////////////////////////////// - -always @ (negedge owr) begin - fork - begin : slot_data - #((od?TS/10:TS)*1) -> sample; - end - begin : slot_reset - #((od?TS/10:TS)*8) -> reset; - end - begin : slot_reset_all - #((od?TS/10:TS)*8*8) begin - od = 1'b0; - -> reset; - end - end - begin : slot_end - @ (posedge owr) begin - disable slot_data; - disable slot_reset; - disable slot_reset_all; - end - end - join -end - -// // bit transfer -// always @ (negedge owr) begin -// //task trn (); begin -// -> transfer; -// cycle <= dtx[0] ? "OPN" : "PUL"; -// pull <= ~dtx[0]; -// cnt <= cnt + 1; -// fork -// // transmit -// begin : trn_tx -// #(TS*1); -// pull <= 1'b0; -// end -// // receive -// begin : trn_rx -// #(TS*1); -// drx = {owr, drx[7:1]}; -// -> sample; -// end -// // reset -// begin : trn_rst -// #(TS*16) -// state <= "RST"; -// cnt <= 0; -// end -// // wait for owr posedge -// begin : trn_pdg -// @ (posedge owr) -// disable trn_rst; -// end -// join -// cycle <= "IDL"; -// end -// //endtask - -////////////////////////////////////////////////////////////////////////////// -// logic -////////////////////////////////////////////////////////////////////////////// - -// power up state -initial begin - pull <= 1'b0; - #1 -> reset; -end - -// reset event -always @ (reset) begin - // IO state - pull <= 1'b0; - dtx <= 0; - cnt <= 0; - cycle <= "OPN"; - // power-up chip state - state <= "RST"; - od <= 1'b0; - if (~owr) @ (posedge owr); - // issue presence pulse - #((od?TS/10:TS)*1); - state <= "PRS"; - pull <= 1'b1; - #((od?TS/10:TS)*4); - pull <= 1'b0; - state <= "IDL"; -end - -// // reset -// always @ (negedge owr) -// if (state == "RST") begin -// trn (); -// state <= "IDL"; -// end - -// // bit transfer -// always @ (negedge owr) -// case (state) -// "IDL": begin -// state <= "CMD"; -// trn (); -// end -// "CMD": begin -// trn (); -// if (cnt == 8) -// cmd <= drx; -// if (cmd == Read_ROM) -// state <= "DTX"; -// dtx <= FAMILY_CODE; -// end -// endcase - - -endmodule Index: trunk/sockit_owm.v =================================================================== --- trunk/sockit_owm.v (revision 2) +++ trunk/sockit_owm.v (nonexistent) @@ -1,327 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// // -// Minimalistic 1-wire (onewire) master with Avalon MM bus interface // -// // -// Copyright (C) 2010 Iztok Jeras // -// // -////////////////////////////////////////////////////////////////////////////// -// // -// This RTL is free hardware: you can redistribute it and/or modify // -// it under the terms of the GNU Lesser General Public License // -// as published by the Free Software Foundation, either // -// version 3 of the License, or (at your option) any later version. // -// // -// This RTL is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with this program. If not, see . // -// // -////////////////////////////////////////////////////////////////////////////// - - -////////////////////////////////////////////////////////////////////////////// -// // -// The clock divider parameter is computed with the next formula: // -// // -// CDR_N = f_CLK * BTP_N (example: CDR_N = 2MHz * 7.5us = 15) // -// CDR_O = f_CLK * BTP_O (example: CDR_O = 2MHz * 1.0us = 2) // -// // -// If the dividing factor is not a round integer, than the timing of the // -// controller will be slightly off, and would support only a subset of // -// 1-wire devices with timing closer to the typical 30us slot. // -// // -// Base time periods BTP_N = "7.5" and BTP_O = "1.0" are optimized for // -// logic consumption and optimal onewire timing. // -// Since the default timing might shrink the range of available frequences // -// to multiples of 2MHz, a less restrictive timing is offered, // -// BTP_N = "5.0" and BTP_O = "1.0", this limits the frequency to multiples // -// of 1MHz. // -// If even this restrictions are too strict use timing BTP_N = "6.0" and // -// BTP_O = "0.5", where the actual periods can be in the range: // -// 6.0us <= BTP_N <= 7.5us // -// 0.5us <= BTP_O <= 0.66us // -// // -////////////////////////////////////////////////////////////////////////////// - -module sockit_owm #( - // interface parameters - parameter BDW = 32, // bus data width - parameter OWN = 1, // number of 1-wire ports - // implementation of overdrive enable - parameter OVD_E = 1, // overdrive functionality is implemented by default - // clock divider ratios (defaults are for a 2MHz clock) - parameter CDR_N = 15, // normal mode - parameter CDR_O = 2, // overdrive mode - // base time period - parameter BTP_N = "7.5", // normal mode (7.5us, options are "7.5", "5.0" and "6.0") - parameter BTP_O = "1.0", // overdrive mode (1.0us, options are "1.0", and "0.5") - // normal mode timing - parameter T_RSTH_N = (BTP_N == "7.5") ? 64 : (BTP_N == "5.0") ? 96 : 80, // reset high - parameter T_RSTL_N = (BTP_N == "7.5") ? 64 : (BTP_N == "5.0") ? 96 : 80, // reset low - parameter T_RSTP_N = (BTP_N == "7.5") ? 10 : (BTP_N == "5.0") ? 15 : 10, // reset presence pulse - parameter T_DAT0_N = (BTP_N == "7.5") ? 8 : (BTP_N == "5.0") ? 12 : 10, // bit 0 low - parameter T_DAT1_N = (BTP_N == "7.5") ? 1 : (BTP_N == "5.0") ? 1 : 1, // bit 1 low - parameter T_BITS_N = (BTP_N == "7.5") ? 2 : (BTP_N == "5.0") ? 3 : 2, // bit sample - parameter T_RCVR_N = (BTP_N == "7.5") ? 1 : (BTP_N == "5.0") ? 1 : 1, // recovery - parameter T_IDLE_N = (BTP_N == "7.5") ? 64 : (BTP_N == "5.0") ? 104 : 1, // recovery - // overdrive mode timing - parameter T_RSTH_O = (BTP_N == "1.0") ? 48 : 96, // reset high - parameter T_RSTL_O = (BTP_N == "1.0") ? 48 : 96, // reset low - parameter T_RSTP_O = (BTP_N == "1.0") ? 10 : 15, // reset presence pulse - parameter T_DAT0_O = (BTP_N == "1.0") ? 6 : 12, // bit 0 low - parameter T_DAT1_O = (BTP_N == "1.0") ? 1 : 2, // bit 1 low - parameter T_BITS_O = (BTP_N == "1.0") ? 2 : 3, // bit sample - parameter T_RCVR_O = (BTP_N == "1.0") ? 1 : 2, // recovery - parameter T_IDLE_O = (BTP_N == "1.0") ? 48 : 96 // recovery -)( - // system signals - input clk, - input rst, - // bus interface - input bus_read, - input bus_write, - input [BDW-1:0] bus_writedata, - output [BDW-1:0] bus_readdata, - output bus_interrupt, - // onewire - output [OWN-1:0] onewire_p, // output power enable - output [OWN-1:0] onewire_e, // output pull down enable - input [OWN-1:0] onewire_i // input from bidirectional wire -); - -////////////////////////////////////////////////////////////////////////////// -// local parameters -////////////////////////////////////////////////////////////////////////////// - -// size of boudrate generator counter (divider for normal mode is largest) -localparam CDW = $clog2(CDR_N); - -// size of port select signal -localparam SDW = $clog2(OWN); - -// size of cycle timing counter -localparam TDW = (T_RSTH_O+T_RSTL_O) > (T_RSTH_N+T_RSTL_N) - ? $clog2(T_RSTH_O+T_RSTL_O) : $clog2(T_RSTH_N+T_RSTL_N); - -////////////////////////////////////////////////////////////////////////////// -// local signals -////////////////////////////////////////////////////////////////////////////// - -// clock divider -//generate if (CDR>1) begin : div_declaration -reg [CDW-1:0] div; -//end endgenerate -wire pls; - -// transfer control -reg owr_trn; // transfer status -reg [TDW-1:0] cnt; // transfer counter - -// port select -//generate if (OWN>1) begin : sel_declaration -reg [SDW-1:0] owr_sel; -//end endgenerate - -// onewire signals -reg [OWN-1:0] owr_pwr; // power -reg owr_ovd; // overdrive -reg owr_rst; // reset -reg owr_dtx; // data bit transmit -reg owr_drx; // data bit receive - -wire owr_p; // output -reg owr_oen; // output enable -wire owr_i; // input - -// interrupt signals -reg irq_etx; // interrupt enable transmit -reg irq_erx; // interrupt enable receive -reg irq_stx; // interrupt status transmit -reg irq_srx; // interrupt status receive - -// timing signals -wire [TDW-1:0] t_idl ; // idle cycle time -wire [TDW-1:0] t_rst ; // reset cycle time -wire [TDW-1:0] t_bit ; // data bit transfer cycle time -wire [TDW-1:0] t_rstp; // reset presence pulse sampling time -wire [TDW-1:0] t_rsth; // reset release time -wire [TDW-1:0] t_dat0; // data bit 0 release time -wire [TDW-1:0] t_dat1; // data bit 1 release time -wire [TDW-1:0] t_bits; // data bit transfer sampling time -wire [TDW-1:0] t_zero; // end of cycle time - -////////////////////////////////////////////////////////////////////////////// -// cycle timing -////////////////////////////////////////////////////////////////////////////// - -// idle time -assign t_idl = owr_ovd ? T_IDLE_O : T_IDLE_N ; -// reset cycle time (reset low + reset hight) -assign t_rst = owr_ovd ? T_RSTL_O + T_RSTH_O : T_RSTL_N + T_RSTH_N ; -// data bit transfer cycle time (write 0 + recovery) -assign t_bit = owr_ovd ? T_DAT0_O + + T_RCVR_N : T_DAT0_N + T_RCVR_O; - -// reset presence pulse sampling time (reset high - reset presence) -assign t_rstp = owr_ovd ? T_RSTH_O - T_RSTP_O : T_RSTH_N - T_RSTP_N ; -// reset release time (reset high) -assign t_rsth = owr_ovd ? T_RSTH_O : T_RSTH_N ; - -// data bit 0 release time (write bit 0 - write bit 0 + recovery) -assign t_dat0 = owr_ovd ? T_DAT0_O - T_DAT0_O + T_RCVR_O : T_DAT0_N - T_DAT0_N + T_RCVR_N; -// data bit 1 release time (write bit 0 - write bit 1 + recovery) -assign t_dat1 = owr_ovd ? T_DAT0_O - T_DAT1_O + T_RCVR_O : T_DAT0_N - T_DAT1_N + T_RCVR_N; -// data bit transfer sampling time (write bit 0 - write bit 1 + recovery) -assign t_bits = owr_ovd ? T_DAT0_O - T_BITS_O + T_RCVR_O : T_DAT0_N - T_BITS_N + T_RCVR_N; - -// end of cycle time -assign t_zero = 'd0; - -////////////////////////////////////////////////////////////////////////////// -// clock divider -////////////////////////////////////////////////////////////////////////////// - -// clock division ratio depends on overdrive mode status, -generate if ((CDR_N>1) | (CDR_O>1)) begin : div_implementation - // clock divider - always @ (posedge clk, posedge rst) - if (rst) div <= 'd0; - else begin - if (bus_write) div <= 'd0; - else div <= pls ? 'd0 : div + owr_trn; - end - // divided clock pulse - assign pls = (div == (owr_ovd ? CDR_O : CDR_N) - 1); -end else begin - // clock period is same as the onewire period - assign pls = 1'b1; -end endgenerate - -////////////////////////////////////////////////////////////////////////////// -// bus logic -////////////////////////////////////////////////////////////////////////////// - -// bus read data -generate if (OWN>1) begin : sel_readdata - assign bus_readdata = {{BDW-OWN-16{1'b0}}, owr_pwr, {8-SDW{1'b0}}, owr_sel, - irq_erx, irq_etx, irq_srx, irq_stx, - owr_i , owr_ovd, owr_trn, owr_drx}; -end else begin - assign bus_readdata = {irq_erx, irq_etx, irq_srx, irq_stx, - owr_i , owr_ovd, owr_trn, owr_drx}; -end endgenerate - -generate if (OWN>1) begin : sel_implementation - // port select - always @ (posedge clk, posedge rst) - if (rst) owr_sel <= {SDW{1'b0}}; - else if (bus_write) owr_sel <= bus_writedata[8+:SDW]; - - // power delivery - always @ (posedge clk, posedge rst) - if (rst) owr_pwr <= {SDW{1'b0}}; - else if (bus_write) owr_pwr <= bus_writedata[16+:SDW]; -end else begin - // port select - always @ (*) owr_sel <= {SDW{1'b0}}; - // power delivery - always @ (posedge clk, posedge rst) - if (rst) owr_pwr <= 1'b0; - else if (bus_write) owr_pwr <= bus_writedata[3]; -end endgenerate - -// bus interrupt -assign bus_interrupt = irq_erx & irq_srx - | irq_etx & irq_stx; - -// interrupt enable -always @ (posedge clk, posedge rst) -if (rst) {irq_erx, irq_etx} <= 2'b00; -else if (bus_write) {irq_erx, irq_etx} <= bus_writedata[7:6]; - -// transmit status (active after onewire transfer cycle ends) -always @ (posedge clk, posedge rst) -if (rst) irq_stx <= 1'b0; -else begin - if (bus_write) irq_stx <= 1'b0; - else if (pls & (cnt == t_zero)) irq_stx <= 1'b1; - else if (bus_read) irq_stx <= 1'b0; -end - -// receive status (active after wire sampling point inside the transfer cycle) -always @ (posedge clk, posedge rst) -if (rst) irq_srx <= 1'b0; -else begin - if (bus_write) irq_srx <= 1'b0; - else if (pls) begin - if (cnt == t_rstp) irq_srx <= owr_rst & ~owr_dtx; // presence detect - else if (cnt == t_bits) irq_srx <= ~owr_rst & owr_dtx; // read data bit - end else if (bus_read) irq_srx <= 1'b0; -end - -////////////////////////////////////////////////////////////////////////////// -// onewire state machine -////////////////////////////////////////////////////////////////////////////// - -// transmit data, reset, overdrive -generate if (OVD_E) begin : ctrl_writedata - always @ (posedge clk, posedge rst) - if (rst) {owr_ovd, owr_rst, owr_dtx} <= 3'b000; - else if (bus_write) {owr_ovd, owr_rst, owr_dtx} <= bus_writedata[2:0]; -end else begin - always @ (posedge clk, posedge rst) - if (rst) {owr_ovd, owr_rst, owr_dtx} <= 3'b000; - else if (bus_write) { owr_rst, owr_dtx} <= bus_writedata[1:0]; -end endgenerate - -// onewire transfer status -always @ (posedge clk, posedge rst) -if (rst) owr_trn <= 1'b0; -else begin - if (bus_write) owr_trn <= ~&bus_writedata[2:0]; - else if (pls & (cnt == t_zero)) owr_trn <= 1'b0; -end - -// state counter (initial value depends whether the cycle is reset or data) -always @ (posedge clk, posedge rst) -if (rst) cnt <= 0; -else begin - if (bus_write) cnt <= (&bus_writedata[1:0] ? t_idl : bus_writedata[1] ? t_rst : t_bit) - 'd1; - else if (pls) cnt <= cnt - 'd1; -end - -// receive data (sampling point depends whether the cycle is reset or data) -always @ (posedge clk) -if (pls) begin - if ( owr_rst & (cnt == t_rstp)) owr_drx <= owr_i; // presence detect - else if (~owr_rst & (cnt == t_bits)) owr_drx <= owr_i; // read data bit -end - -// output register (switch point depends whether the cycle is reset or data) -always @ (posedge clk, posedge rst) -if (rst) owr_oen <= 1'b0; -else begin - if (bus_write) owr_oen <= ~&bus_writedata[1:0]; - else if (pls) begin - if (owr_rst & (cnt == t_rsth)) owr_oen <= 1'b0; // reset - else if (owr_dtx & (cnt == t_dat1)) owr_oen <= 1'b0; // write 1, read - else if ( (cnt == t_dat0)) owr_oen <= 1'b0; // write 0 - end -end - -////////////////////////////////////////////////////////////////////////////// -// IO -////////////////////////////////////////////////////////////////////////////// - -// only one 1-wire line cn be accessed at the same time -assign onewire_e = owr_oen << owr_sel; -// all 1-wire lines can be powered independently -assign onewire_p = owr_pwr; - -// 1-wire line status read multiplexer -assign owr_i = onewire_i [owr_sel]; -assign owr_p = onewire_p [owr_sel]; - -endmodule Index: trunk/LICENSE =================================================================== --- trunk/LICENSE (nonexistent) +++ trunk/LICENSE (revision 3) @@ -0,0 +1,27 @@ +Verilog RTL and testbench files are licensed under LGPL 3. +Bash and Windows cmd scripts are licensed under LGPL 3. +lic/lgpl.txt + +TCL scripts for integration into Altera tools are licensed under LGPL 3. This +files were at first based on Altera demos, but are now entirely rewritten +according requirements described in SOPC Builder documentation. +lic/lgpl.txt + +The glue code for the Nios II HAL is licensed with the original public domain +like license by Altera. This files were at first based on Altera demos, but +are now almost entirely rewritten according requirements described in Nios II +documentation. + +The license for the "public domain kit" has not been changed. The modified code +is also public domain. +lic/license_pub.txt + +The documentation (including all drawings except the PS/2 connector) is +licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported +(CC BY-SA 3.0) License. +http://creativecommons.org/licenses/by-sa/3.0/ +http://creativecommons.org/licenses/by-sa/3.0/legalcode + +The PS/2 connector SVG drawing is from Wikipedia, and its copyright holder +released it into the public domain. +http://en.wikipedia.org/wiki/File:MiniDIN-6_Connector_Pinout.svg Index: trunk/HAL/src/owerr.c =================================================================== --- trunk/HAL/src/owerr.c (revision 2) +++ trunk/HAL/src/owerr.c (revision 3) @@ -30,17 +30,12 @@ // #include -#ifndef _WIN32_WCE #include -#endif -#ifdef _WIN64 -#include -#endif #include "ownet.h" #ifndef SIZE_OWERROR_STACK - #ifdef SMALL_MEMORY_TARGET - //for small memory, only hole 1 error + #ifdef SOCKIT_OWM_ERR_SMALL + //for small memory, only hold 1 error #define SIZE_OWERROR_STACK 1 #else #define SIZE_OWERROR_STACK 10 @@ -81,7 +76,7 @@ #else void owRaiseError(int); #endif -#ifndef SMALL_MEMORY_TARGET +#ifndef SOCKIT_OWM_ERR_SMALL void owPrintErrorMsg(FILE *); void owPrintErrorMsgStd(); char *owGetErrorMsg(int); @@ -163,9 +158,9 @@ #endif -// SMALL_MEMORY_TARGET - embedded microcontrollers, where these +// SOCKIT_OWM_ERR_SMALL - embedded microcontrollers, where these // messaging functions might not make any sense. -#ifndef SMALL_MEMORY_TARGET +#ifndef SOCKIT_OWM_ERR_SMALL //Array of meaningful error messages to associate with codes. //Not used on targets with low memory (i.e. PIC). static char *owErrorMsg[125] = @@ -302,7 +297,6 @@ return owErrorMsg[err]; } -#ifndef __C51__ //-------------------------------------------------------------------------- // The 'owPrintErrorMsg' is the method for printing an error from the stack. // The destination for the print is specified by the argument, fileno, which @@ -329,7 +323,6 @@ fprintf(filenum,"Error %d: %s\r\n",err,owErrorMsg[err]); #endif } -#endif //__C51__ // Same as above, except uses default printf output void owPrintErrorMsgStd()
/trunk/HAL/src/sockit_owm.c
1,5 → 1,9
/******************************************************************************
* *
* Minimalistic 1-wire (onewire) master with Avalon MM bus interface *
* Copyright (C) 2010 Iztok Jeras *
* Since the code is based on an Altera app note, I kept their license. *
* *
* License Agreement *
* *
* Copyright (c) 2008 Altera Corporation, San Jose, California, USA. *
29,30 → 33,6
******************************************************************************/
 
 
//////////////////////////////////////////////////////////////////////////////
// //
// Minimalistic 1-wire (onewire) master with Avalon MM bus interface //
// //
// Copyright (C) 2010 Iztok Jeras //
// //
//////////////////////////////////////////////////////////////////////////////
// //
// This program is free software: you can redistribute it and/or modify //
// it under the terms of the GNU Lesser General Public License //
// as published by the Free Software Foundation, either //
// version 3 of the License, or (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
// //
//////////////////////////////////////////////////////////////////////////////
 
 
#include <fcntl.h>
 
#include "sys/alt_dev.h"
80,14 → 60,13
void sockit_owm_init (alt_u32 irq)
{
int error;
// initialize semaphore for transfer locking
// TODO there is a warning to fix here
// initialize semaphore for 1-wire cycle locking
error = ALT_FLAG_CREATE (sockit_owm.irq, 0) ||
ALT_SEM_CREATE (sockit_owm.trn, 1);
ALT_SEM_CREATE (sockit_owm.cyc, 1);
 
if (!error) {
// enable TX interrupt, RX is unused
sockit_owm.ena = 0x1;
// enable interrupt
sockit_owm.ien = 0x1;
// register the interrupt handler
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
alt_ic_isr_register (0, irq, sockit_owm_irq, NULL, 0x0);
105,7 → 84,7
{
// clear onewire interrupts
IORD_SOCKIT_OWM (sockit_owm.base);
// set the flag indicating a completed transfer
// set the flag indicating a completed 1-wire cycle
ALT_FLAG_POST (sockit_owm.irq, 0x1, OS_FLAG_SET);
}
#else
/trunk/HAL/src/temp28.c
0,0 → 1,129
//---------------------------------------------------------------------------
// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// Except as contained in this notice, the name of Dallas Semiconductor
// shall not be used except as stated in the Dallas Semiconductor
// Branding Policy.
// ---------------------------------------------------------------------------
//
// temp28.C - Module to read the DS18B20 - temperature measurement.
//
// ---------------------------------------------------------------------------
//
//
#include "ownet.h"
#include "temp28.h"
 
//----------------------------------------------------------------------
// Read the temperature of a DS18B20 (family code 0x28)
//
// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to
// OpenCOM to indicate the port number.
// 'SerialNum' - Serial Number of DS18B20 to read temperature from
// 'Temp ' - pointer to variable where that temperature will be
// returned
//
// Returns: TRUE(1) temperature has been read and verified
// FALSE(0) could not read the temperature, perhaps device is not
// in contact
//
int ReadTemperature28(int portnum, uchar *SerialNum, float *Temp)
{
uchar rt=FALSE;
uchar send_block[30],lastcrc8;
int send_cnt, tsht, i, loop=0;
int power;
 
// set the device serial number to the counter device
owSerialNum(portnum,SerialNum,FALSE);
 
for (loop = 0; loop < 2; loop ++)
{
// check if the chip is connected to VDD
if (owAccess(portnum))
{
owWriteByte(portnum,0xB4);
power = owReadByte(portnum);
}
 
// access the device
if (owAccess(portnum))
{
// send the convert command and if nesessary start power delivery
if (power) {
if (!owWriteBytePower(portnum,0x44))
return FALSE;
} else {
if (!owWriteByte(portnum,0x44))
return FALSE;
}
 
// sleep for 1 second
msDelay(1000);
 
// turn off the 1-Wire Net strong pull-up
if (power) {
if (owLevel(portnum,MODE_NORMAL) != MODE_NORMAL)
return FALSE;
}
 
// access the device
if (owAccess(portnum))
{
// create a block to send that reads the temperature
// read scratchpad command
send_cnt = 0;
send_block[send_cnt++] = 0xBE;
// now add the read bytes for data bytes and crc8
for (i = 0; i < 9; i++)
send_block[send_cnt++] = 0xFF;
 
// now send the block
if (owBlock(portnum,FALSE,send_block,send_cnt))
{
// initialize the CRC8
setcrc8(portnum,0);
// perform the CRC8 on the last 8 bytes of packet
for (i = send_cnt - 9; i < send_cnt; i++)
lastcrc8 = docrc8(portnum,send_block[i]);
 
// verify CRC8 is correct
if (lastcrc8 == 0x00)
{
// calculate the high-res temperature
tsht = send_block[2] << 8;
tsht = tsht | send_block[1];
if (tsht & 0x00001000)
tsht = tsht | 0xffff0000;
*Temp = ((float) tsht)/16;
// success
rt = TRUE;
break;
}
}
}
}
 
}
 
// return the result flag rt
return rt;
}
trunk/HAL/src/temp28.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/HAL/src/temp10.c =================================================================== --- trunk/HAL/src/temp10.c (nonexistent) +++ trunk/HAL/src/temp10.c (revision 3) @@ -0,0 +1,139 @@ +//--------------------------------------------------------------------------- +// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES +// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// Except as contained in this notice, the name of Dallas Semiconductor +// shall not be used except as stated in the Dallas Semiconductor +// Branding Policy. +// --------------------------------------------------------------------------- +// +// temp10.C - Module to read the DS1920/DS1820 - temperature measurement. +// +// --------------------------------------------------------------------------- +// +// +#include "ownet.h" +#include "temp10.h" + +//---------------------------------------------------------------------- +// Read the temperature of a DS1920/DS1820 (family code 0x10) +// +// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to +// OpenCOM to indicate the port number. +// 'SerialNum' - Serial Number of DS1920/DS1820 to read temperature from +// 'Temp ' - pointer to variable where that temperature will be +// returned +// +// Returns: TRUE(1) temperature has been read and verified +// FALSE(0) could not read the temperature, perhaps device is not +// in contact +// +int ReadTemperature10(int portnum, uchar *SerialNum, float *Temp) +{ + uchar rt=FALSE; + uchar send_block[30],lastcrc8; + int send_cnt, tsht, i, loop=0; + float tmp,cr,cpc; + int power; + + // set the device serial number to the counter device + owSerialNum(portnum,SerialNum,FALSE); + + for (loop = 0; loop < 2; loop ++) + { + // check if the chip is connected to VDD + if (owAccess(portnum)) + { + owWriteByte(portnum,0xB4); + power = owReadByte(portnum); + } + + // access the device + if (owAccess(portnum)) + { + // send the convert command and if nesessary start power delivery + if (power) { + if (!owWriteBytePower(portnum,0x44)) + return FALSE; + } else { + if (!owWriteByte(portnum,0x44)) + return FALSE; + } + + // sleep for 1 second + msDelay(1000); + + // turn off the 1-Wire Net strong pull-up + if (power) { + if (owLevel(portnum,MODE_NORMAL) != MODE_NORMAL) + return FALSE; + } + + // access the device + if (owAccess(portnum)) + { + // create a block to send that reads the temperature + // read scratchpad command + send_cnt = 0; + send_block[send_cnt++] = 0xBE; + // now add the read bytes for data bytes and crc8 + for (i = 0; i < 9; i++) + send_block[send_cnt++] = 0xFF; + + // now send the block + if (owBlock(portnum,FALSE,send_block,send_cnt)) + { + // initialize the CRC8 + setcrc8(portnum,0); + // perform the CRC8 on the last 8 bytes of packet + for (i = send_cnt - 9; i < send_cnt; i++) + lastcrc8 = docrc8(portnum,send_block[i]); + + // verify CRC8 is correct + if (lastcrc8 == 0x00) + { + // calculate the high-res temperature + tsht = send_block[1]/2; + if (send_block[2] & 0x01) + tsht |= -128; + tmp = (float)(tsht); + cr = send_block[7]; + cpc = send_block[8]; + if (((cpc - cr) == 1) && (loop == 0)) + continue; + if (cpc == 0) + return FALSE; + else + tmp = tmp - (float)0.25 + (cpc - cr)/cpc; + + *Temp = tmp; + // success + rt = TRUE; + break; + } + } + } + } + + } + + // return the result flag rt + return rt; +}
trunk/HAL/src/temp10.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/HAL/src/owlnk.c =================================================================== --- trunk/HAL/src/owlnk.c (revision 2) +++ trunk/HAL/src/owlnk.c (revision 3) @@ -76,25 +76,26 @@ int ovd = (sockit_owm.ovd >> portnum) & 0x1; // lock transfer - ALT_SEM_PEND (sockit_owm.trn, 0); + ALT_SEM_PEND (sockit_owm.cyc, 0); - // write RST - IOWR_SOCKIT_OWM (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_POWER_OFST) - | (portnum << SOCKIT_OWM_SEL_OFST) - | (sockit_owm.ena << SOCKIT_OWM_ETX_OFST) - | (ovd << SOCKIT_OWM_OVD_OFST) - | SOCKIT_OWM_RST_MSK); + // reset pulse + IOWR_SOCKIT_OWM_CTL (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_CTL_POWER_OFST ) + | (portnum << SOCKIT_OWM_CTL_SEL_OFST ) + | (sockit_owm.ien ? SOCKIT_OWM_CTL_IEN_MSK : 0x00) + | ( SOCKIT_OWM_CTL_CYC_MSK ) + | (ovd ? SOCKIT_OWM_CTL_OVD_MSK : 0x00) + | ( SOCKIT_OWM_CTL_RST_MSK )); // wait for irq to set the transfer end flag ALT_FLAG_PEND (sockit_owm.irq, 0x1, OS_FLAG_WAIT_SET_ANY + OS_FLAG_CONSUME, 0); // wait for STX (end of transfer cycle) and read the presence status - while ((reg = IORD_SOCKIT_OWM (sockit_owm.base)) & SOCKIT_OWM_TRN_MSK); + while ((reg = IORD_SOCKIT_OWM_CTL (sockit_owm.base)) & SOCKIT_OWM_CTL_CYC_MSK); // release transfer lock - ALT_SEM_POST (sockit_owm.trn); + ALT_SEM_POST (sockit_owm.cyc); - // return DRX (presence detect) - return (~reg >> SOCKIT_OWM_DAT_OFST) & 0x1; + // return negated DAT (presence detect) + return (~reg & SOCKIT_OWM_CTL_DAT_MSK); // NOTE the shortcut } //-------------------------------------------------------------------------- @@ -116,25 +117,26 @@ int ovd = (sockit_owm.ovd >> portnum) & 0x1; // lock transfer - ALT_SEM_PEND (sockit_owm.trn, 0); + ALT_SEM_PEND (sockit_owm.cyc, 0); - // write RST - IOWR_SOCKIT_OWM (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_POWER_OFST) - | (portnum << SOCKIT_OWM_SEL_OFST) - | (sockit_owm.ena << SOCKIT_OWM_ETX_OFST) - | (ovd << SOCKIT_OWM_OVD_OFST) - | ((sendbit & 0x1) << SOCKIT_OWM_DAT_OFST)); + // read/write data + IOWR_SOCKIT_OWM_CTL (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_CTL_POWER_OFST ) + | (portnum << SOCKIT_OWM_CTL_SEL_OFST ) + | (sockit_owm.ien ? SOCKIT_OWM_CTL_IEN_MSK : 0x00) + | ( SOCKIT_OWM_CTL_CYC_MSK ) + | (ovd ? SOCKIT_OWM_CTL_OVD_MSK : 0x00) + | (sendbit & SOCKIT_OWM_CTL_DAT_MSK )); // NOTE the shortcut // wait for irq to set the transfer end flag ALT_FLAG_PEND (sockit_owm.irq, 0x1, OS_FLAG_WAIT_SET_ANY + OS_FLAG_CONSUME, 0); // wait for STX (end of transfer cycle) and read the read data bit - while ((reg = IORD_SOCKIT_OWM (sockit_owm.base)) & SOCKIT_OWM_TRN_MSK); + while ((reg = IORD_SOCKIT_OWM_CTL (sockit_owm.base)) & SOCKIT_OWM_CTL_CYC_MSK); // release transfer lock - ALT_SEM_POST (sockit_owm.trn); + ALT_SEM_POST (sockit_owm.cyc); - // return DRX (read bit) - return (reg >> SOCKIT_OWM_DAT_OFST) & 0x1; + // return DAT (read bit) + return (reg & SOCKIT_OWM_CTL_DAT_MSK); // NOTE the shortcut } //-------------------------------------------------------------------------- @@ -205,10 +207,15 @@ // SMALLINT owSpeed(int portnum, SMALLINT new_speed) { - if (new_speed == MODE_OVERDRIVE) sockit_owm.ovd |= (1 << portnum); - if (new_speed == MODE_NORMAL ) sockit_owm.ovd &= ~(1 << portnum); + int select; + select = 0x1 << portnum; + // if overdrive is implemented use it + if (sockit_owm.ovd_e) { + if (new_speed == MODE_OVERDRIVE) sockit_owm.ovd |= select; + if (new_speed == MODE_NORMAL ) sockit_owm.ovd &= ~select; + } // return the current port state - return ((sockit_owm.ovd >> portnum) & 0x1) ? MODE_OVERDRIVE : MODE_NORMAL; + return (sockit_owm.ovd & select) ? MODE_OVERDRIVE : MODE_NORMAL; } //-------------------------------------------------------------------------- @@ -230,15 +237,12 @@ if (new_level == MODE_STRONG5) { // set the power bit sockit_owm.pwr |= (1 << portnum); - IOWR_SOCKIT_OWM (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_POWER_OFST) - | SOCKIT_OWM_PWR_MSK - | SOCKIT_OWM_IDL_MSK); + IOWR_SOCKIT_OWM_CTL (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_CTL_POWER_OFST) | SOCKIT_OWM_CTL_PWR_MSK); } if (new_level == MODE_NORMAL) { // clear the power bit sockit_owm.pwr &= ~(1 << portnum); - IOWR_SOCKIT_OWM (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_POWER_OFST) - | SOCKIT_OWM_IDL_MSK); + IOWR_SOCKIT_OWM_CTL (sockit_owm.base, (sockit_owm.pwr << SOCKIT_OWM_CTL_POWER_OFST)); } // return the current port state return ((sockit_owm.pwr >> portnum) & 0x1) ? MODE_STRONG5 : MODE_NORMAL; @@ -268,23 +272,27 @@ #if SOCKIT_OWM_HW_DLY int i; + // compute the number delay cycles depending on delay time + len = (len * sockit_owm.f_dly) >> 16; + // lock transfer - ALT_SEM_PEND (sockit_owm.trn, 0); + ALT_SEM_PEND (sockit_owm.cyc, 0); for (i=0; i
/trunk/HAL/src/temp42.c
0,0 → 1,129
//---------------------------------------------------------------------------
// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// Except as contained in this notice, the name of Dallas Semiconductor
// shall not be used except as stated in the Dallas Semiconductor
// Branding Policy.
// ---------------------------------------------------------------------------
//
// temp42.C - Module to read the DS28EA00 - temperature measurement.
//
// ---------------------------------------------------------------------------
//
//
#include "ownet.h"
#include "temp42.h"
 
//----------------------------------------------------------------------
// Read the temperature of a DS28EA00 (family code 0x42)
//
// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to
// OpenCOM to indicate the port number.
// 'SerialNum' - Serial Number of DS18B20 to read temperature from
// 'Temp ' - pointer to variable where that temperature will be
// returned
//
// Returns: TRUE(1) temperature has been read and verified
// FALSE(0) could not read the temperature, perhaps device is not
// in contact
//
int ReadTemperature42(int portnum, uchar *SerialNum, float *Temp)
{
uchar rt=FALSE;
uchar send_block[30],lastcrc8;
int send_cnt, tsht, i, loop=0;
int power;
 
// set the device serial number to the counter device
owSerialNum(portnum,SerialNum,FALSE);
 
for (loop = 0; loop < 2; loop ++)
{
// check if the chip is connected to VDD
if (owOverdriveAccess(portnum))
{
owWriteByte(portnum,0xB4);
power = owReadByte(portnum);
}
 
// access the device
if (owOverdriveAccess(portnum))
{
// send the convert command and if nesessary start power delivery
if (power) {
if (!owWriteBytePower(portnum,0x44))
return FALSE;
} else {
if (!owWriteByte(portnum,0x44))
return FALSE;
}
 
// sleep for 1 second
msDelay(1000);
 
// turn off the 1-Wire Net strong pull-up
if (power) {
if (owLevel(portnum,MODE_NORMAL) != MODE_NORMAL)
return FALSE;
}
 
// access the device
if (owOverdriveAccess(portnum))
{
// create a block to send that reads the temperature
// read scratchpad command
send_cnt = 0;
send_block[send_cnt++] = 0xBE;
// now add the read bytes for data bytes and crc8
for (i = 0; i < 9; i++)
send_block[send_cnt++] = 0xFF;
 
// now send the block
if (owBlock(portnum,FALSE,send_block,send_cnt))
{
// initialize the CRC8
setcrc8(portnum,0);
// perform the CRC8 on the last 8 bytes of packet
for (i = send_cnt - 9; i < send_cnt; i++)
lastcrc8 = docrc8(portnum,send_block[i]);
 
// verify CRC8 is correct
if (lastcrc8 == 0x00)
{
// calculate the high-res temperature
tsht = send_block[2] << 8;
tsht = tsht | send_block[1];
if (tsht & 0x00001000)
tsht = tsht | 0xffff0000;
*Temp = ((float) tsht)/16;
// success
rt = TRUE;
break;
}
}
}
}
}
// exit overdrive mode
owSpeed(portnum, MODE_NORMAL);
// return the result flag rt
return rt;
}
trunk/HAL/src/temp42.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/HAL/inc/temp42.h =================================================================== --- trunk/HAL/inc/temp42.h (nonexistent) +++ trunk/HAL/inc/temp42.h (revision 3) @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- +// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES +// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// Except as contained in this notice, the name of Dallas Semiconductor +// shall not be used except as stated in the Dallas Semiconductor +// Branding Policy. +// --------------------------------------------------------------------------- +// +// temp42.h - Header to read the DS28EA00 - temperature measurement. +// +// --------------------------------------------------------------------------- + +int ReadTemperature42(int,uchar *,float *);
trunk/HAL/inc/temp42.h Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/HAL/inc/ownet.h =================================================================== --- trunk/HAL/inc/ownet.h (revision 2) +++ trunk/HAL/inc/ownet.h (revision 3) @@ -43,64 +43,17 @@ // Common Includes to ownet applications //--------------------------------------------------------------// #include +#include - //--------------------------------------------------------------// // Target Specific Information //--------------------------------------------------------------// -//--------------------------------------------------------------// -// Handhelds (PalmOS, WinCE) -//--------------------------------------------------------------// -#ifdef __MC68K__ - //MC68K is the type of processor in the PILOT - //Metrowerk's CodeWarrior defines this symbol - #include - #ifndef strcmp - #include - #define strcmp StrCompare - #endif - #include -#endif -#ifdef _WIN32_WCE - //All of our projects had this flag defined by default (_WIN32_WCE), - //but I'm not 100% positive that this is _the_ definitive - //flag to use to identify a WinCE system. - #include "WinCElnk.h" - #ifndef FILE - #define FILE int - extern int sprintf(char *buffer, char *format,...); - extern void fprintf(FILE *fp, char *format,...); - extern void printf(char *format,...); - #endif -#endif +// Altera Nios II + uCOS II +// configuration options available in: sockit_owm_sw.tcl +//#define SOCKIT_OWM_ERR_ENABLE +//#define SOCKIT_OWM_ERR_SMALL -#if !defined(_WIN32_WCE) && !defined(__MC68K__) - #include -#endif - -#ifdef __C51__ - #define FILE int - #define exit(c) return - typedef unsigned int ushort; - typedef unsigned long ulong; - #define SMALLINT uchar -#endif - -#ifdef __ICCMAXQ__ - #define FILE int - #define stdout 0 - #define stdin 1 - #define stderr 2 - typedef unsigned int ushort; - typedef unsigned long ulong; - #define SMALLINT short - #define main micro_main - #define real_main main - #define SMALL_MEMORY_TARGET -#endif - - //--------------------------------------------------------------// // Typedefs //--------------------------------------------------------------// @@ -128,15 +81,6 @@ #define SMALLINT int #endif -// setting max baud -#ifdef _WINDOWS - // 0x02 = PARAMSET_19200 -#define MAX_BAUD 0x02 -#else - // 0x06 = PARMSET_115200 -#define MAX_BAUD 0x06 -#endif - #ifndef OW_UCHAR #define OW_UCHAR typedef unsigned char uchar; @@ -197,6 +141,9 @@ //--------------------------------------------------------------// // Error handling //--------------------------------------------------------------// + +#ifdef SOCKIT_OWM_ERR_ENABLE + extern int owGetErrorNum(void); extern int owHasErrors(void); @@ -215,7 +162,7 @@ #define OWASSERT(s,err,ret) if(!(s)){owRaiseError((err));return (ret);} #endif -#ifdef SMALL_MEMORY_TARGET +#ifdef SOCKIT_OWM_ERR_SMALL #define OWERROR_DUMP(fileno) /*no-op*/; #else //Prints the stack out to the given file. @@ -225,6 +172,14 @@ extern char *owGetErrorMsg(int); #endif +#else + +#define OWERROR_CLEAR() /*no-op*/; +#define OWERROR(err) /*no-op*/; +#define OWERROR_DUMP(fileno) /*no-op*/; + +#endif + #define OWERROR_NO_ERROR_SET 0 #define OWERROR_NO_DEVICES_ON_NET 1 #define OWERROR_RESET_FAILED 2
/trunk/HAL/inc/sockit_owm.h
1,5 → 1,9
/******************************************************************************
* *
* Minimalistic 1-wire (onewire) master with Avalon MM bus interface *
* Copyright (C) 2010 Iztok Jeras *
* Since the code is based on an Altera app note, I kept their license. *
* *
* License Agreement *
* *
* Copyright (c) 2008 Altera Corporation, San Jose, California, USA. *
29,30 → 33,6
******************************************************************************/
 
 
//////////////////////////////////////////////////////////////////////////////
// //
// Minimalistic 1-wire (onewire) master with Avalon MM bus interface //
// //
// Copyright (C) 2010 Iztok Jeras //
// //
//////////////////////////////////////////////////////////////////////////////
// //
// This program is free software: you can redistribute it and/or modify //
// it under the terms of the GNU Lesser General Public License //
// as published by the Free Software Foundation, either //
// version 3 of the License, or (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
// //
//////////////////////////////////////////////////////////////////////////////
 
 
#ifndef __SOCKIT_OWM_H__
#define __SOCKIT_OWM_H__
 
67,63 → 47,63
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#endif // __cplusplus
 
/*
* The sockit_owm_state structure is used to hold device specific data.
* This includes the transmit and receive buffers.
*
* An instance of this structure is created in the auto-generated
* alt_sys_init.c file for each UART listed in the systems SOPC file. This is
* done using the SOCKIT_OWM_STATE_INSTANCE macro given below.
*/
//////////////////////////////////////////////////////////////////////////////
// global structure containing the current state of the sockit_owm driver
//////////////////////////////////////////////////////////////////////////////
 
typedef struct sockit_owm_state_s
{
void* base; // The base address of the device
// constants
void* base; // The base address of the device
alt_u32 ovd_e; // Overdrive mode implementation enable
alt_u32 cdr_e; // Clock divider ratio register implementation enable
alt_u32 own; // Number of onewire ports
alt_u32 ovd_e; // Overdrive mode implementation enable
char btp_n[3]; // base time period for normal mode
char btp_o[3]; // base time period for overdrive mode
// clock divider ratio
alt_u32 cdr_n; // cdr for normal mode
alt_u32 cdr_o; // cdr for overdrive mode
alt_u32 f_dly; // u16.16 1/ms (inverse of delay time)
// status
alt_u32 ena; // interrupt enable status
alt_u32 ien; // interrupt enable status
alt_u32 use; // Aquire status
alt_u32 ovd; // Overdrive status
alt_u32 pwr; // Power status
// OS multitasking features
//ALT_FLAG_GRP (srx) // receive event flag
ALT_FLAG_GRP (irq) // transmit event flag
ALT_SEM (trn) // transfer lock semaphore
ALT_FLAG_GRP (irq) // interrupt event flag
ALT_SEM (cyc) // transfer lock semaphore
} sockit_owm_state;
 
/*
* The macro ALTERA_AVALON_UART_INSTANCE is used by the auto-generated file
* alt_sys_init.c to create an instance of this device driver state.
* ALTERA_AVALON_UART_INSTANCE is mapped below to SOCKIT_OWM_STATE_INSTANCE.
*/
//////////////////////////////////////////////////////////////////////////////
// instantiation macro
// can be used oly once, since the driver is based on global variables
//////////////////////////////////////////////////////////////////////////////
 
#define SOCKIT_OWM_INSTANCE(name, state) \
sockit_owm_state sockit_owm = { (void*) name##_BASE, name##_OWN, name##_OVD_E, 0, 0, 0, 0}; \
sockit_owm_state sockit_owm = { (void*) name##_BASE, \
name##_OVD_E, \
name##_CDR_E, \
name##_OWN, \
name##_BTP_N, \
name##_BTP_O, \
name##_CDR_N, \
name##_CDR_O, \
name##_F_DLY, \
0, 0, 0, 0}; \
void* state = (void*) name##_BASE
/*
* sockit_owm_init() is called by the auto-generated function
* alt_sys_init() for each UART in the system. This is done using the
* SOCKIT_OWM_INIT macro given below.
*
* This function is responsible for performing all the run time initialization
* for a device instance, i.e. registering the interrupt handler, and
* regestering the device with the system.
*/
 
//////////////////////////////////////////////////////////////////////////////
// initialization function, registers the interrupt handler
//////////////////////////////////////////////////////////////////////////////
 
extern void sockit_owm_init(alt_u32 irq);
 
/*
* The macro SOCKIT_OWM_STATE_INIT is used by the auto-generated file
* alt_sys_init.c to initialize an instance of the device driver state.
*
* This macro performs a sanity check to ensure that the interrupt has been
* connected for this device. If not, then an appropriate error message is
* generated at build time.
*/
//////////////////////////////////////////////////////////////////////////////
// initialization macro
//////////////////////////////////////////////////////////////////////////////
 
#ifndef SOCKIT_OWM_POLLING
#define SOCKIT_OWM_INIT(name, state) \
if (name##_IRQ == ALT_IRQ_NOT_CONNECTED) \
130,11 → 110,11
{ \
ALT_LINK_ERROR ("Error: Interrupt not connected for " #name ". " \
"You have selected the interrupt driven version of " \
"the SocKit Avalon 1-wire master (mini) driver, but " \
"the sockit_owm (SoCkit 1-wire master) driver, but " \
"the interrupt is not connected for this device. You " \
"can select a polled mode driver by checking the " \
"'small driver' option in the HAL configuration " \
" window, or by using the -DSOCKIT_OWM_SMALL " \
"window, or by using the -DSOCKIT_OWM_POLLING " \
"preprocessor flag."); \
} \
else \
147,6 → 127,6
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif // __cplusplus
 
#endif /* __SOCKIT_OWM_H__ */
#endif // __SOCKIT_OWM_H__
/trunk/HAL/inc/temp28.h
0,0 → 1,31
//---------------------------------------------------------------------------
// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// Except as contained in this notice, the name of Dallas Semiconductor
// shall not be used except as stated in the Dallas Semiconductor
// Branding Policy.
// ---------------------------------------------------------------------------
//
// temp28.h - Header to read the DS18B20 - temperature measurement.
//
// ---------------------------------------------------------------------------
 
int ReadTemperature28(int,uchar *,float *);
trunk/HAL/inc/temp28.h Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/HAL/inc/temp10.h =================================================================== --- trunk/HAL/inc/temp10.h (nonexistent) +++ trunk/HAL/inc/temp10.h (revision 3) @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- +// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES +// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// Except as contained in this notice, the name of Dallas Semiconductor +// shall not be used except as stated in the Dallas Semiconductor +// Branding Policy. +// --------------------------------------------------------------------------- +// +// temp10.h - Header to read the DS1920/DS1820 - temperature measurement. +// +// --------------------------------------------------------------------------- + +int ReadTemperature10(int,uchar *,float *);
trunk/HAL/inc/temp10.h Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/demo/Terasic_DE1/DE1_soc_nios2.qsf =================================================================== --- trunk/demo/Terasic_DE1/DE1_soc_nios2.qsf (nonexistent) +++ trunk/demo/Terasic_DE1/DE1_soc_nios2.qsf (revision 3) @@ -0,0 +1,706 @@ +# Copyright (C) 1991-2006 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. + +set_global_assignment -name TOP_LEVEL_ENTITY DE1_soc_nios2 +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 9.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "15:21:40 APRIL 17, 2010" +set_global_assignment -name LAST_QUARTUS_VERSION "10.0 SP1" + +# Terasic DE1 board FPGA +set_global_assignment -name FAMILY "Cyclone II" +set_global_assignment -name DEVICE EP2C20F484C7 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7 +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 + +# pinout +set_location_assignment PIN_A13 -to GPIO_0[0] +set_location_assignment PIN_B13 -to GPIO_0[1] +set_location_assignment PIN_A14 -to GPIO_0[2] +set_location_assignment PIN_B14 -to GPIO_0[3] +set_location_assignment PIN_A15 -to GPIO_0[4] +set_location_assignment PIN_B15 -to GPIO_0[5] +set_location_assignment PIN_A16 -to GPIO_0[6] +set_location_assignment PIN_B16 -to GPIO_0[7] +set_location_assignment PIN_A17 -to GPIO_0[8] +set_location_assignment PIN_B17 -to GPIO_0[9] +set_location_assignment PIN_A18 -to GPIO_0[10] +set_location_assignment PIN_B18 -to GPIO_0[11] +set_location_assignment PIN_A19 -to GPIO_0[12] +set_location_assignment PIN_B19 -to GPIO_0[13] +set_location_assignment PIN_A20 -to GPIO_0[14] +set_location_assignment PIN_B20 -to GPIO_0[15] +set_location_assignment PIN_C21 -to GPIO_0[16] +set_location_assignment PIN_C22 -to GPIO_0[17] +set_location_assignment PIN_D21 -to GPIO_0[18] +set_location_assignment PIN_D22 -to GPIO_0[19] +set_location_assignment PIN_E21 -to GPIO_0[20] +set_location_assignment PIN_E22 -to GPIO_0[21] +set_location_assignment PIN_F21 -to GPIO_0[22] +set_location_assignment PIN_F22 -to GPIO_0[23] +set_location_assignment PIN_G21 -to GPIO_0[24] +set_location_assignment PIN_G22 -to GPIO_0[25] +set_location_assignment PIN_J21 -to GPIO_0[26] +set_location_assignment PIN_J22 -to GPIO_0[27] +set_location_assignment PIN_K21 -to GPIO_0[28] +set_location_assignment PIN_K22 -to GPIO_0[29] +set_location_assignment PIN_J19 -to GPIO_0[30] +set_location_assignment PIN_J20 -to GPIO_0[31] +set_location_assignment PIN_J18 -to GPIO_0[32] +set_location_assignment PIN_K20 -to GPIO_0[33] +set_location_assignment PIN_L19 -to GPIO_0[34] +set_location_assignment PIN_L18 -to GPIO_0[35] +set_location_assignment PIN_H12 -to GPIO_1[0] +set_location_assignment PIN_H13 -to GPIO_1[1] +set_location_assignment PIN_H14 -to GPIO_1[2] +set_location_assignment PIN_G15 -to GPIO_1[3] +set_location_assignment PIN_E14 -to GPIO_1[4] +set_location_assignment PIN_E15 -to GPIO_1[5] +set_location_assignment PIN_F15 -to GPIO_1[6] +set_location_assignment PIN_G16 -to GPIO_1[7] +set_location_assignment PIN_F12 -to GPIO_1[8] +set_location_assignment PIN_F13 -to GPIO_1[9] +set_location_assignment PIN_C14 -to GPIO_1[10] +set_location_assignment PIN_D14 -to GPIO_1[11] +set_location_assignment PIN_D15 -to GPIO_1[12] +set_location_assignment PIN_D16 -to GPIO_1[13] +set_location_assignment PIN_C17 -to GPIO_1[14] +set_location_assignment PIN_C18 -to GPIO_1[15] +set_location_assignment PIN_C19 -to GPIO_1[16] +set_location_assignment PIN_C20 -to GPIO_1[17] +set_location_assignment PIN_D19 -to GPIO_1[18] +set_location_assignment PIN_D20 -to GPIO_1[19] +set_location_assignment PIN_E20 -to GPIO_1[20] +set_location_assignment PIN_F20 -to GPIO_1[21] +set_location_assignment PIN_E19 -to GPIO_1[22] +set_location_assignment PIN_E18 -to GPIO_1[23] +set_location_assignment PIN_G20 -to GPIO_1[24] +set_location_assignment PIN_G18 -to GPIO_1[25] +set_location_assignment PIN_G17 -to GPIO_1[26] +set_location_assignment PIN_H17 -to GPIO_1[27] +set_location_assignment PIN_J15 -to GPIO_1[28] +set_location_assignment PIN_H18 -to GPIO_1[29] +set_location_assignment PIN_N22 -to GPIO_1[30] +set_location_assignment PIN_N21 -to GPIO_1[31] +set_location_assignment PIN_P15 -to GPIO_1[32] +set_location_assignment PIN_N15 -to GPIO_1[33] +set_location_assignment PIN_P17 -to GPIO_1[34] +set_location_assignment PIN_P18 -to GPIO_1[35] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[0] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[1] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[2] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[3] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[4] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[5] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[6] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[7] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[8] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[9] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[10] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[11] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[12] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[13] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[14] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[15] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[16] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[17] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[18] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[19] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[20] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[21] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[22] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[23] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[24] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[25] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[26] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[27] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[28] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[29] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[30] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[31] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[32] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[33] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[34] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_0[35] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[0] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[1] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[2] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[3] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[4] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[5] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[6] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[7] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[8] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[9] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[10] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[11] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[12] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[13] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[14] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[15] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[16] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[17] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[18] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[19] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[20] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[21] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[22] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[23] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[24] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[25] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[26] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[27] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[28] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[29] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[30] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[31] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[32] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[33] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[34] +set_instance_assignment -name IO_STANDARD LVTTL -to GPIO_1[35] +set_location_assignment PIN_L22 -to SW[0] +set_location_assignment PIN_L21 -to SW[1] +set_location_assignment PIN_M22 -to SW[2] +set_location_assignment PIN_V12 -to SW[3] +set_location_assignment PIN_W12 -to SW[4] +set_location_assignment PIN_U12 -to SW[5] +set_location_assignment PIN_U11 -to SW[6] +set_location_assignment PIN_M2 -to SW[7] +set_location_assignment PIN_M1 -to SW[8] +set_location_assignment PIN_L2 -to SW[9] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[0] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[1] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[2] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[3] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[4] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[5] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[6] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[7] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[8] +set_instance_assignment -name IO_STANDARD LVTTL -to SW[9] +set_location_assignment PIN_J2 -to HEX0[0] +set_location_assignment PIN_J1 -to HEX0[1] +set_location_assignment PIN_H2 -to HEX0[2] +set_location_assignment PIN_H1 -to HEX0[3] +set_location_assignment PIN_F2 -to HEX0[4] +set_location_assignment PIN_F1 -to HEX0[5] +set_location_assignment PIN_E2 -to HEX0[6] +set_location_assignment PIN_E1 -to HEX1[0] +set_location_assignment PIN_H6 -to HEX1[1] +set_location_assignment PIN_H5 -to HEX1[2] +set_location_assignment PIN_H4 -to HEX1[3] +set_location_assignment PIN_G3 -to HEX1[4] +set_location_assignment PIN_D2 -to HEX1[5] +set_location_assignment PIN_D1 -to HEX1[6] +set_location_assignment PIN_G5 -to HEX2[0] +set_location_assignment PIN_G6 -to HEX2[1] +set_location_assignment PIN_C2 -to HEX2[2] +set_location_assignment PIN_C1 -to HEX2[3] +set_location_assignment PIN_E3 -to HEX2[4] +set_location_assignment PIN_E4 -to HEX2[5] +set_location_assignment PIN_D3 -to HEX2[6] +set_location_assignment PIN_F4 -to HEX3[0] +set_location_assignment PIN_D5 -to HEX3[1] +set_location_assignment PIN_D6 -to HEX3[2] +set_location_assignment PIN_J4 -to HEX3[3] +set_location_assignment PIN_L8 -to HEX3[4] +set_location_assignment PIN_F3 -to HEX3[5] +set_location_assignment PIN_D4 -to HEX3[6] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[0] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[1] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[2] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[3] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[4] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[5] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX0[6] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[0] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[1] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[2] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[3] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[4] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[5] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX1[6] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[0] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[1] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[2] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[3] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[4] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[5] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX2[6] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[0] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[1] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[2] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[3] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[4] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[5] +set_instance_assignment -name IO_STANDARD LVTTL -to HEX3[6] +set_location_assignment PIN_R22 -to KEY[0] +set_location_assignment PIN_R21 -to KEY[1] +set_location_assignment PIN_T22 -to KEY[2] +set_location_assignment PIN_T21 -to KEY[3] +set_location_assignment PIN_R20 -to LEDR[0] +set_location_assignment PIN_R19 -to LEDR[1] +set_location_assignment PIN_U19 -to LEDR[2] +set_location_assignment PIN_Y19 -to LEDR[3] +set_location_assignment PIN_T18 -to LEDR[4] +set_location_assignment PIN_V19 -to LEDR[5] +set_location_assignment PIN_Y18 -to LEDR[6] +set_location_assignment PIN_U18 -to LEDR[7] +set_location_assignment PIN_R18 -to LEDR[8] +set_location_assignment PIN_R17 -to LEDR[9] +set_location_assignment PIN_U22 -to LEDG[0] +set_location_assignment PIN_U21 -to LEDG[1] +set_location_assignment PIN_V22 -to LEDG[2] +set_location_assignment PIN_V21 -to LEDG[3] +set_location_assignment PIN_W22 -to LEDG[4] +set_location_assignment PIN_W21 -to LEDG[5] +set_location_assignment PIN_Y22 -to LEDG[6] +set_location_assignment PIN_Y21 -to LEDG[7] +set_instance_assignment -name IO_STANDARD LVTTL -to KEY[0] +set_instance_assignment -name IO_STANDARD LVTTL -to KEY[1] +set_instance_assignment -name IO_STANDARD LVTTL -to KEY[2] +set_instance_assignment -name IO_STANDARD LVTTL -to KEY[3] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[0] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[1] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[2] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[3] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[4] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[5] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[6] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[7] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[8] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDR[9] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[0] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[1] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[2] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[3] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[4] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[5] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[6] +set_instance_assignment -name IO_STANDARD LVTTL -to LEDG[7] +set_location_assignment PIN_D12 -to CLOCK_27[0] +set_location_assignment PIN_E12 -to CLOCK_27[1] +set_location_assignment PIN_B12 -to CLOCK_24[0] +set_location_assignment PIN_A12 -to CLOCK_24[1] +set_location_assignment PIN_L1 -to CLOCK_50 +set_location_assignment PIN_M21 -to EXT_CLOCK +set_instance_assignment -name IO_STANDARD LVTTL -to CLOCK_27[1] +set_instance_assignment -name IO_STANDARD LVTTL -to CLOCK_24[0] +set_instance_assignment -name IO_STANDARD LVTTL -to CLOCK_24[1] +set_instance_assignment -name IO_STANDARD LVTTL -to CLOCK_50 +set_instance_assignment -name IO_STANDARD LVTTL -to EXT_CLOCK +set_location_assignment PIN_V20 -to SD_CLK +set_location_assignment PIN_Y20 -to SD_CMD +set_location_assignment PIN_W20 -to SD_DAT +set_location_assignment PIN_U20 -to SD_DAT3 +set_instance_assignment -name IO_STANDARD LVTTL -to SD_CLK +set_instance_assignment -name IO_STANDARD LVTTL -to SD_CMD +set_instance_assignment -name IO_STANDARD LVTTL -to SD_DAT +set_instance_assignment -name IO_STANDARD LVTTL -to SD_DAT3 +set_location_assignment PIN_H15 -to PS2_CLK +set_location_assignment PIN_J14 -to PS2_DAT +set_location_assignment PIN_F14 -to UART_RXD +set_location_assignment PIN_G12 -to UART_TXD +set_instance_assignment -name IO_STANDARD LVTTL -to PS2_CLK +set_instance_assignment -name IO_STANDARD LVTTL -to PS2_DAT +set_instance_assignment -name IO_STANDARD LVTTL -to UART_RXD +set_instance_assignment -name IO_STANDARD LVTTL -to UART_TXD +set_location_assignment PIN_E8 -to TDI +set_location_assignment PIN_D8 -to TCS +set_location_assignment PIN_C7 -to TCK +set_location_assignment PIN_D7 -to TDO +set_instance_assignment -name IO_STANDARD LVTTL -to TDI +set_instance_assignment -name IO_STANDARD LVTTL -to TCS +set_instance_assignment -name IO_STANDARD LVTTL -to TCK +set_instance_assignment -name IO_STANDARD LVTTL -to TDO +set_location_assignment PIN_D9 -to VGA_R[0] +set_location_assignment PIN_C9 -to VGA_R[1] +set_location_assignment PIN_A7 -to VGA_R[2] +set_location_assignment PIN_B7 -to VGA_R[3] +set_location_assignment PIN_B8 -to VGA_G[0] +set_location_assignment PIN_C10 -to VGA_G[1] +set_location_assignment PIN_B9 -to VGA_G[2] +set_location_assignment PIN_A8 -to VGA_G[3] +set_location_assignment PIN_A9 -to VGA_B[0] +set_location_assignment PIN_D11 -to VGA_B[1] +set_location_assignment PIN_A10 -to VGA_B[2] +set_location_assignment PIN_B10 -to VGA_B[3] +set_location_assignment PIN_A11 -to VGA_HS +set_location_assignment PIN_B11 -to VGA_VS +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_R[0] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_R[1] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_R[2] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_R[3] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_G[0] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_G[1] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_G[2] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_G[3] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_B[0] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_B[1] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_B[2] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_B[3] +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_HS +set_instance_assignment -name IO_STANDARD LVTTL -to VGA_VS +set_location_assignment PIN_A3 -to I2C_SCLK +set_location_assignment PIN_B3 -to I2C_SDAT +set_location_assignment PIN_A6 -to AUD_ADCLRCK +set_location_assignment PIN_B6 -to AUD_ADCDAT +set_location_assignment PIN_A5 -to AUD_DACLRCK +set_location_assignment PIN_B5 -to AUD_DACDAT +set_location_assignment PIN_B4 -to AUD_XCK +set_location_assignment PIN_A4 -to AUD_BCLK +set_instance_assignment -name IO_STANDARD LVTTL -to I2C_SCLK +set_instance_assignment -name IO_STANDARD LVTTL -to I2C_SDAT +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_ADCLRCK +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_ADCDAT +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_DACLRCK +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_DACDAT +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_XCK +set_instance_assignment -name IO_STANDARD LVTTL -to AUD_BCLK +set_location_assignment PIN_W4 -to DRAM_ADDR[0] +set_location_assignment PIN_W5 -to DRAM_ADDR[1] +set_location_assignment PIN_Y3 -to DRAM_ADDR[2] +set_location_assignment PIN_Y4 -to DRAM_ADDR[3] +set_location_assignment PIN_R6 -to DRAM_ADDR[4] +set_location_assignment PIN_R5 -to DRAM_ADDR[5] +set_location_assignment PIN_P6 -to DRAM_ADDR[6] +set_location_assignment PIN_P5 -to DRAM_ADDR[7] +set_location_assignment PIN_P3 -to DRAM_ADDR[8] +set_location_assignment PIN_N4 -to DRAM_ADDR[9] +set_location_assignment PIN_W3 -to DRAM_ADDR[10] +set_location_assignment PIN_N6 -to DRAM_ADDR[11] +set_location_assignment PIN_U3 -to DRAM_BA[0] +set_location_assignment PIN_V4 -to DRAM_BA[1] +set_location_assignment PIN_T3 -to DRAM_CAS_N +set_location_assignment PIN_N3 -to DRAM_CKE +set_location_assignment PIN_U4 -to DRAM_CLK +set_location_assignment PIN_T6 -to DRAM_CS_N +set_location_assignment PIN_U1 -to DRAM_DQ[0] +set_location_assignment PIN_U2 -to DRAM_DQ[1] +set_location_assignment PIN_V1 -to DRAM_DQ[2] +set_location_assignment PIN_V2 -to DRAM_DQ[3] +set_location_assignment PIN_W1 -to DRAM_DQ[4] +set_location_assignment PIN_W2 -to DRAM_DQ[5] +set_location_assignment PIN_Y1 -to DRAM_DQ[6] +set_location_assignment PIN_Y2 -to DRAM_DQ[7] +set_location_assignment PIN_N1 -to DRAM_DQ[8] +set_location_assignment PIN_N2 -to DRAM_DQ[9] +set_location_assignment PIN_P1 -to DRAM_DQ[10] +set_location_assignment PIN_P2 -to DRAM_DQ[11] +set_location_assignment PIN_R1 -to DRAM_DQ[12] +set_location_assignment PIN_R2 -to DRAM_DQ[13] +set_location_assignment PIN_T1 -to DRAM_DQ[14] +set_location_assignment PIN_T2 -to DRAM_DQ[15] +set_location_assignment PIN_R7 -to DRAM_DQM[0] +set_location_assignment PIN_M5 -to DRAM_DQM[1] +set_location_assignment PIN_T5 -to DRAM_RAS_N +set_location_assignment PIN_R8 -to DRAM_WE_N +set_location_assignment PIN_AB20 -to FL_ADDR[0] +set_location_assignment PIN_AA14 -to FL_ADDR[1] +set_location_assignment PIN_Y16 -to FL_ADDR[2] +set_location_assignment PIN_R15 -to FL_ADDR[3] +set_location_assignment PIN_T15 -to FL_ADDR[4] +set_location_assignment PIN_U15 -to FL_ADDR[5] +set_location_assignment PIN_V15 -to FL_ADDR[6] +set_location_assignment PIN_W15 -to FL_ADDR[7] +set_location_assignment PIN_R14 -to FL_ADDR[8] +set_location_assignment PIN_Y13 -to FL_ADDR[9] +set_location_assignment PIN_R12 -to FL_ADDR[10] +set_location_assignment PIN_T12 -to FL_ADDR[11] +set_location_assignment PIN_AB14 -to FL_ADDR[12] +set_location_assignment PIN_AA13 -to FL_ADDR[13] +set_location_assignment PIN_AB13 -to FL_ADDR[14] +set_location_assignment PIN_AA12 -to FL_ADDR[15] +set_location_assignment PIN_AB12 -to FL_ADDR[16] +set_location_assignment PIN_AA20 -to FL_ADDR[17] +set_location_assignment PIN_U14 -to FL_ADDR[18] +set_location_assignment PIN_V14 -to FL_ADDR[19] +set_location_assignment PIN_U13 -to FL_ADDR[20] +set_location_assignment PIN_R13 -to FL_ADDR[21] +set_location_assignment PIN_AB16 -to FL_DQ[0] +set_location_assignment PIN_AA16 -to FL_DQ[1] +set_location_assignment PIN_AB17 -to FL_DQ[2] +set_location_assignment PIN_AA17 -to FL_DQ[3] +set_location_assignment PIN_AB18 -to FL_DQ[4] +set_location_assignment PIN_AA18 -to FL_DQ[5] +set_location_assignment PIN_AB19 -to FL_DQ[6] +set_location_assignment PIN_AA19 -to FL_DQ[7] +set_location_assignment PIN_AA15 -to FL_OE_N +set_location_assignment PIN_W14 -to FL_RST_N +set_location_assignment PIN_Y14 -to FL_WE_N +set_location_assignment PIN_AA3 -to SRAM_ADDR[0] +set_location_assignment PIN_AB3 -to SRAM_ADDR[1] +set_location_assignment PIN_AA4 -to SRAM_ADDR[2] +set_location_assignment PIN_AB4 -to SRAM_ADDR[3] +set_location_assignment PIN_AA5 -to SRAM_ADDR[4] +set_location_assignment PIN_AB10 -to SRAM_ADDR[5] +set_location_assignment PIN_AA11 -to SRAM_ADDR[6] +set_location_assignment PIN_AB11 -to SRAM_ADDR[7] +set_location_assignment PIN_V11 -to SRAM_ADDR[8] +set_location_assignment PIN_W11 -to SRAM_ADDR[9] +set_location_assignment PIN_R11 -to SRAM_ADDR[10] +set_location_assignment PIN_T11 -to SRAM_ADDR[11] +set_location_assignment PIN_Y10 -to SRAM_ADDR[12] +set_location_assignment PIN_U10 -to SRAM_ADDR[13] +set_location_assignment PIN_R10 -to SRAM_ADDR[14] +set_location_assignment PIN_T7 -to SRAM_ADDR[15] +set_location_assignment PIN_Y6 -to SRAM_ADDR[16] +set_location_assignment PIN_Y5 -to SRAM_ADDR[17] +set_location_assignment PIN_AB5 -to SRAM_CE_N +set_location_assignment PIN_AA6 -to SRAM_DQ[0] +set_location_assignment PIN_AB6 -to SRAM_DQ[1] +set_location_assignment PIN_AA7 -to SRAM_DQ[2] +set_location_assignment PIN_AB7 -to SRAM_DQ[3] +set_location_assignment PIN_AA8 -to SRAM_DQ[4] +set_location_assignment PIN_AB8 -to SRAM_DQ[5] +set_location_assignment PIN_AA9 -to SRAM_DQ[6] +set_location_assignment PIN_AB9 -to SRAM_DQ[7] +set_location_assignment PIN_Y9 -to SRAM_DQ[8] +set_location_assignment PIN_W9 -to SRAM_DQ[9] +set_location_assignment PIN_V9 -to SRAM_DQ[10] +set_location_assignment PIN_U9 -to SRAM_DQ[11] +set_location_assignment PIN_R9 -to SRAM_DQ[12] +set_location_assignment PIN_W8 -to SRAM_DQ[13] +set_location_assignment PIN_V8 -to SRAM_DQ[14] +set_location_assignment PIN_U8 -to SRAM_DQ[15] +set_location_assignment PIN_Y7 -to SRAM_B_N[0] +set_location_assignment PIN_T8 -to SRAM_OE_N +set_location_assignment PIN_W7 -to SRAM_B_N[1] +set_location_assignment PIN_AA10 -to SRAM_WE_N +set_location_assignment PIN_AB15 -to FL_CE_N + +# Quartus configuration + +# file list + + + + +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" + +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name VERILOG_FILE DE1_soc_nios2.v +set_global_assignment -name VERILOG_FILE debouncer.v +set_global_assignment -name QIP_FILE soc.qip + +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT TRI-STATED" +set_global_assignment -name ENABLE_SIGNALTAP ON +set_global_assignment -name USE_SIGNALTAP_FILE DE1_soc_nios2.stp +set_global_assignment -name SIGNALTAP_FILE DE1_soc_nios2.stp +set_global_assignment -name SLD_NODE_CREATOR_ID 110 -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_ENTITY_NAME sld_signaltap -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_clk -to "soc:soc_i|onewire:the_onewire|clk" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[0] -to "soc:soc_i|onewire:the_onewire|bus_adr" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[1] -to "soc:soc_i|onewire:the_onewire|bus_irq" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[2] -to "soc:soc_i|onewire:the_onewire|bus_rdt[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[3] -to "soc:soc_i|onewire:the_onewire|bus_rdt[10]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[4] -to "soc:soc_i|onewire:the_onewire|bus_rdt[11]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[5] -to "soc:soc_i|onewire:the_onewire|bus_rdt[12]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[6] -to "soc:soc_i|onewire:the_onewire|bus_rdt[13]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[7] -to "soc:soc_i|onewire:the_onewire|bus_rdt[14]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[8] -to "soc:soc_i|onewire:the_onewire|bus_rdt[15]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[9] -to "soc:soc_i|onewire:the_onewire|bus_rdt[16]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[10] -to "soc:soc_i|onewire:the_onewire|bus_rdt[17]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[11] -to "soc:soc_i|onewire:the_onewire|bus_rdt[18]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[12] -to "soc:soc_i|onewire:the_onewire|bus_rdt[19]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[13] -to "soc:soc_i|onewire:the_onewire|bus_rdt[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[14] -to "soc:soc_i|onewire:the_onewire|bus_rdt[20]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[15] -to "soc:soc_i|onewire:the_onewire|bus_rdt[21]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[16] -to "soc:soc_i|onewire:the_onewire|bus_rdt[22]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[17] -to "soc:soc_i|onewire:the_onewire|bus_rdt[23]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[18] -to "soc:soc_i|onewire:the_onewire|bus_rdt[24]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[19] -to "soc:soc_i|onewire:the_onewire|bus_rdt[25]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[20] -to "soc:soc_i|onewire:the_onewire|bus_rdt[26]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[21] -to "soc:soc_i|onewire:the_onewire|bus_rdt[27]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[22] -to "soc:soc_i|onewire:the_onewire|bus_rdt[28]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[23] -to "soc:soc_i|onewire:the_onewire|bus_rdt[29]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[24] -to "soc:soc_i|onewire:the_onewire|bus_rdt[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[25] -to "soc:soc_i|onewire:the_onewire|bus_rdt[30]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[26] -to "soc:soc_i|onewire:the_onewire|bus_rdt[31]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[27] -to "soc:soc_i|onewire:the_onewire|bus_rdt[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[28] -to "soc:soc_i|onewire:the_onewire|bus_rdt[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[29] -to "soc:soc_i|onewire:the_onewire|bus_rdt[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[30] -to "soc:soc_i|onewire:the_onewire|bus_rdt[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[31] -to "soc:soc_i|onewire:the_onewire|bus_rdt[7]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[32] -to "soc:soc_i|onewire:the_onewire|bus_rdt[8]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[33] -to "soc:soc_i|onewire:the_onewire|bus_rdt[9]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[34] -to "soc:soc_i|onewire:the_onewire|bus_ren" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[35] -to "soc:soc_i|onewire:the_onewire|bus_wdt[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[36] -to "soc:soc_i|onewire:the_onewire|bus_wdt[10]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[37] -to "soc:soc_i|onewire:the_onewire|bus_wdt[11]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[38] -to "soc:soc_i|onewire:the_onewire|bus_wdt[12]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[39] -to "soc:soc_i|onewire:the_onewire|bus_wdt[13]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[40] -to "soc:soc_i|onewire:the_onewire|bus_wdt[14]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[41] -to "soc:soc_i|onewire:the_onewire|bus_wdt[15]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[42] -to "soc:soc_i|onewire:the_onewire|bus_wdt[16]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[43] -to "soc:soc_i|onewire:the_onewire|bus_wdt[17]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[44] -to "soc:soc_i|onewire:the_onewire|bus_wdt[18]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[45] -to "soc:soc_i|onewire:the_onewire|bus_wdt[19]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[46] -to "soc:soc_i|onewire:the_onewire|bus_wdt[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[47] -to "soc:soc_i|onewire:the_onewire|bus_wdt[20]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[48] -to "soc:soc_i|onewire:the_onewire|bus_wdt[21]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[49] -to "soc:soc_i|onewire:the_onewire|bus_wdt[22]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[50] -to "soc:soc_i|onewire:the_onewire|bus_wdt[23]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[51] -to "soc:soc_i|onewire:the_onewire|bus_wdt[24]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[52] -to "soc:soc_i|onewire:the_onewire|bus_wdt[25]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[53] -to "soc:soc_i|onewire:the_onewire|bus_wdt[26]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[54] -to "soc:soc_i|onewire:the_onewire|bus_wdt[27]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[55] -to "soc:soc_i|onewire:the_onewire|bus_wdt[28]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[56] -to "soc:soc_i|onewire:the_onewire|bus_wdt[29]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[57] -to "soc:soc_i|onewire:the_onewire|bus_wdt[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[58] -to "soc:soc_i|onewire:the_onewire|bus_wdt[30]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[59] -to "soc:soc_i|onewire:the_onewire|bus_wdt[31]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[60] -to "soc:soc_i|onewire:the_onewire|bus_wdt[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[61] -to "soc:soc_i|onewire:the_onewire|bus_wdt[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[62] -to "soc:soc_i|onewire:the_onewire|bus_wdt[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[63] -to "soc:soc_i|onewire:the_onewire|bus_wdt[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[64] -to "soc:soc_i|onewire:the_onewire|bus_wdt[7]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[65] -to "soc:soc_i|onewire:the_onewire|bus_wdt[8]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[66] -to "soc:soc_i|onewire:the_onewire|bus_wdt[9]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[67] -to "soc:soc_i|onewire:the_onewire|bus_wen" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[68] -to "soc:soc_i|onewire:the_onewire|owr_e" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[69] -to "soc:soc_i|onewire:the_onewire|owr_i" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[70] -to "soc:soc_i|onewire:the_onewire|owr_p" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[71] -to "soc:soc_i|onewire:the_onewire|rst" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[0] -to "soc:soc_i|onewire:the_onewire|bus_adr" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[1] -to "soc:soc_i|onewire:the_onewire|bus_irq" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[2] -to "soc:soc_i|onewire:the_onewire|bus_rdt[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[3] -to "soc:soc_i|onewire:the_onewire|bus_rdt[10]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[4] -to "soc:soc_i|onewire:the_onewire|bus_rdt[11]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[5] -to "soc:soc_i|onewire:the_onewire|bus_rdt[12]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[6] -to "soc:soc_i|onewire:the_onewire|bus_rdt[13]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[7] -to "soc:soc_i|onewire:the_onewire|bus_rdt[14]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[8] -to "soc:soc_i|onewire:the_onewire|bus_rdt[15]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[9] -to "soc:soc_i|onewire:the_onewire|bus_rdt[16]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[10] -to "soc:soc_i|onewire:the_onewire|bus_rdt[17]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[11] -to "soc:soc_i|onewire:the_onewire|bus_rdt[18]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[12] -to "soc:soc_i|onewire:the_onewire|bus_rdt[19]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[13] -to "soc:soc_i|onewire:the_onewire|bus_rdt[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[14] -to "soc:soc_i|onewire:the_onewire|bus_rdt[20]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[15] -to "soc:soc_i|onewire:the_onewire|bus_rdt[21]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[16] -to "soc:soc_i|onewire:the_onewire|bus_rdt[22]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[17] -to "soc:soc_i|onewire:the_onewire|bus_rdt[23]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[18] -to "soc:soc_i|onewire:the_onewire|bus_rdt[24]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[19] -to "soc:soc_i|onewire:the_onewire|bus_rdt[25]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[20] -to "soc:soc_i|onewire:the_onewire|bus_rdt[26]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[21] -to "soc:soc_i|onewire:the_onewire|bus_rdt[27]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[22] -to "soc:soc_i|onewire:the_onewire|bus_rdt[28]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[23] -to "soc:soc_i|onewire:the_onewire|bus_rdt[29]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[24] -to "soc:soc_i|onewire:the_onewire|bus_rdt[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[25] -to "soc:soc_i|onewire:the_onewire|bus_rdt[30]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[26] -to "soc:soc_i|onewire:the_onewire|bus_rdt[31]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[27] -to "soc:soc_i|onewire:the_onewire|bus_rdt[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[28] -to "soc:soc_i|onewire:the_onewire|bus_rdt[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[29] -to "soc:soc_i|onewire:the_onewire|bus_rdt[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[30] -to "soc:soc_i|onewire:the_onewire|bus_rdt[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[31] -to "soc:soc_i|onewire:the_onewire|bus_rdt[7]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[32] -to "soc:soc_i|onewire:the_onewire|bus_rdt[8]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[33] -to "soc:soc_i|onewire:the_onewire|bus_rdt[9]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[34] -to "soc:soc_i|onewire:the_onewire|bus_ren" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[35] -to "soc:soc_i|onewire:the_onewire|bus_wdt[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[36] -to "soc:soc_i|onewire:the_onewire|bus_wdt[10]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[37] -to "soc:soc_i|onewire:the_onewire|bus_wdt[11]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[38] -to "soc:soc_i|onewire:the_onewire|bus_wdt[12]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[39] -to "soc:soc_i|onewire:the_onewire|bus_wdt[13]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[40] -to "soc:soc_i|onewire:the_onewire|bus_wdt[14]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[41] -to "soc:soc_i|onewire:the_onewire|bus_wdt[15]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[42] -to "soc:soc_i|onewire:the_onewire|bus_wdt[16]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[43] -to "soc:soc_i|onewire:the_onewire|bus_wdt[17]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[44] -to "soc:soc_i|onewire:the_onewire|bus_wdt[18]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[45] -to "soc:soc_i|onewire:the_onewire|bus_wdt[19]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[46] -to "soc:soc_i|onewire:the_onewire|bus_wdt[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[47] -to "soc:soc_i|onewire:the_onewire|bus_wdt[20]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[48] -to "soc:soc_i|onewire:the_onewire|bus_wdt[21]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[49] -to "soc:soc_i|onewire:the_onewire|bus_wdt[22]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[50] -to "soc:soc_i|onewire:the_onewire|bus_wdt[23]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[51] -to "soc:soc_i|onewire:the_onewire|bus_wdt[24]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[52] -to "soc:soc_i|onewire:the_onewire|bus_wdt[25]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[53] -to "soc:soc_i|onewire:the_onewire|bus_wdt[26]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[54] -to "soc:soc_i|onewire:the_onewire|bus_wdt[27]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[55] -to "soc:soc_i|onewire:the_onewire|bus_wdt[28]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[56] -to "soc:soc_i|onewire:the_onewire|bus_wdt[29]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[57] -to "soc:soc_i|onewire:the_onewire|bus_wdt[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[58] -to "soc:soc_i|onewire:the_onewire|bus_wdt[30]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[59] -to "soc:soc_i|onewire:the_onewire|bus_wdt[31]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[60] -to "soc:soc_i|onewire:the_onewire|bus_wdt[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[61] -to "soc:soc_i|onewire:the_onewire|bus_wdt[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[62] -to "soc:soc_i|onewire:the_onewire|bus_wdt[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[63] -to "soc:soc_i|onewire:the_onewire|bus_wdt[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[64] -to "soc:soc_i|onewire:the_onewire|bus_wdt[7]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[65] -to "soc:soc_i|onewire:the_onewire|bus_wdt[8]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[66] -to "soc:soc_i|onewire:the_onewire|bus_wdt[9]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[67] -to "soc:soc_i|onewire:the_onewire|bus_wen" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[68] -to "soc:soc_i|onewire:the_onewire|owr_e" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[69] -to "soc:soc_i|onewire:the_onewire|owr_i" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[70] -to "soc:soc_i|onewire:the_onewire|owr_p" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[71] -to "soc:soc_i|onewire:the_onewire|rst" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_NODE_INFO=805334528" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_POWER_UP_TRIGGER=0" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_SEGMENT_SIZE=512" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_ATTRIBUTE_MEM_MODE=OFF" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STORAGE_QUALIFIER_GAP_RECORD=1" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_SAMPLE_DEPTH=512" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_TRIGGER_LEVEL_PIPELINE=1" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_ENABLE_ADVANCED_TRIGGER=0" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_trigger_in[0] -to "soc:soc_i|onewire:the_onewire|bus_ren" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_trigger_in[1] -to "soc:soc_i|onewire:the_onewire|bus_wen" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_TRIGGER_IN_ENABLED=0" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STATE_FLOW_USE_GENERATED=0" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STATE_BITS=11" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_BUFFER_FULL_STOP=1" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_CURRENT_RESOURCE_WIDTH=1" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_TRIGGER_LEVEL=1" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_ADVANCED_TRIGGER_ENTITY=basic,1," -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_TRIGGER_BITS=2" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STORAGE_QUALIFIER_MODE=TRANSITIONAL" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[72] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[73] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[74] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[75] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[76] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[77] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[78] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[79] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[80] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[81] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[82] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[83] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[84] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_data_in[85] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[72] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[73] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[74] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[75] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[76] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[77] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[78] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_n[6]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[79] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[0]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[80] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[1]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[81] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[2]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[82] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[3]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[83] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[4]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[84] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[5]" -section_id auto_signaltap_0 +set_instance_assignment -name CONNECT_TO_SLD_NODE_ENTITY_PORT acq_storage_qualifier_in[85] -to "soc:soc_i|onewire:the_onewire|sockit_owm:onewire|cdr_o[6]" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_DATA_BITS=86" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STORAGE_QUALIFIER_BITS=86" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_INVERSION_MASK=00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_INVERSION_MASK_LENGTH=116" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_STORAGE_QUALIFIER_INVERSION_MASK_LENGTH=87" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_NODE_CRC_LOWORD=56357" -section_id auto_signaltap_0 +set_global_assignment -name SLD_NODE_PARAMETER_ASSIGNMENT "SLD_NODE_CRC_HIWORD=33129" -section_id auto_signaltap_0 +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file Index: trunk/demo/Terasic_DE1/soc.sopcinfo =================================================================== --- trunk/demo/Terasic_DE1/soc.sopcinfo (nonexistent) +++ trunk/demo/Terasic_DE1/soc.sopcinfo (revision 3) @@ -0,0 +1,12260 @@ + + + + + + + com.altera.entityinterfaces.moduleext.IDeviceFamily$EDeviceFamily + CYCLONEII + false + true + true + true + + + com.altera.sopcmodel.ensemble.Ensemble$EFabricMode + SOPC + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + com.altera.entityinterfaces.moduleext.IModuleGenerateHDL$HDLLanguage + VERILOG + false + true + true + true + + + java.lang.String + DE1_soc_nios2.qpf + false + true + true + true + + + boolean + true + false + true + true + true + + + long + 30150066089 + false + true + true + true + + + long + 1294693433376 + false + true + true + true + + + + + long + 24000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + long + 0 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + false + true + true + false + true + + + java.lang.Long + 0 + true + true + false + true + + clock + false + + in_clk + Input + 1 + clk + + + + + + java.lang.String + clk_in + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + java.lang.String + clk_in + false + true + false + true + + + long + 24000000 + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + clk_out + Output + 1 + clk + + + false + cpu + clk + cpu.clk + + + false + jtag_uart + clk + jtag_uart.clk + + + false + uart + clk + uart.clk + + + false + onchip_ram + clk1 + onchip_ram.clk1 + + + false + sdram + clk + sdram.clk + + + false + pio_7seg + clk + pio_7seg.clk + + + false + pio_ledg + clk + pio_ledg.clk + + + false + pio_ledr + clk + pio_ledr.clk + + + false + epcs_flash + clk + epcs_flash.clk + + + false + cfi_flash + clk + cfi_flash.clk + + + false + tri_state_bridge_flash + clk + tri_state_bridge_flash.clk + + + false + sysid + clk + sysid.clk + + + false + timer + clk + timer.clk + + + false + onewire + clock_reset + onewire.clock_reset + + + + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + clk_in_reset + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + true + + reset_n_out + Output + 1 + reset_n + + + + + + + embeddedsw.configuration.cpuArchitecture + Nios II + + + embeddedsw.configuration.HDLSimCachesCleared + 1 + + + embeddedsw.CMacro.CPU_IMPLEMENTATION + "tiny" + + + embeddedsw.CMacro.BIG_ENDIAN + 0 + + + embeddedsw.CMacro.CPU_FREQ + 24000000u + + + embeddedsw.CMacro.ICACHE_LINE_SIZE + 0 + + + embeddedsw.CMacro.ICACHE_LINE_SIZE_LOG2 + 0 + + + embeddedsw.CMacro.ICACHE_SIZE + 0 + + + embeddedsw.CMacro.DCACHE_LINE_SIZE + 0 + + + embeddedsw.CMacro.DCACHE_LINE_SIZE_LOG2 + 0 + + + embeddedsw.CMacro.DCACHE_SIZE + 0 + + + embeddedsw.CMacro.FLUSHDA_SUPPORTED + + + + embeddedsw.CMacro.HAS_JMPI_INSTRUCTION + + + + embeddedsw.configuration.resetSlave + onchip_ram.s1 + + + embeddedsw.configuration.resetOffset + 0 + + + embeddedsw.configuration.exceptionSlave + onchip_ram.s1 + + + embeddedsw.configuration.exceptionOffset + 32 + + + embeddedsw.configuration.breakSlave + cpu.jtag_debug_module + + + embeddedsw.configuration.breakOffset + 32 + + + embeddedsw.CMacro.EXCEPTION_ADDR + 0x1804020 + + + embeddedsw.CMacro.RESET_ADDR + 0x1804000 + + + embeddedsw.CMacro.BREAK_ADDR + 0x1809020 + + + embeddedsw.CMacro.HAS_DEBUG_STUB + + + + embeddedsw.CMacro.HAS_DEBUG_CORE + 1 + + + embeddedsw.CMacro.CPU_ID_SIZE + 1 + + + embeddedsw.CMacro.CPU_ID_VALUE + 0x0 + + + embeddedsw.CMacro.HARDWARE_MULTIPLY_PRESENT + 0 + + + embeddedsw.CMacro.HARDWARE_MULX_PRESENT + 0 + + + embeddedsw.CMacro.HARDWARE_DIVIDE_PRESENT + 0 + + + embeddedsw.CMacro.INST_ADDR_WIDTH + 25 + + + embeddedsw.CMacro.DATA_ADDR_WIDTH + 25 + + + java.lang.String + + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.nios2.components.Nios2InternalSettings$OptPerfCounterWidth + _32 + false + false + true + true + + + com.altera.nios2.components.Nios2InternalSettings$OptInterruptControllerType + Internal + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + com.altera.nios2.components.Nios2InternalSettings$OptBranchPredictionType + Automatic + false + false + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.nios2.components.Nios2InternalSettings$OptBhtPtrSz + _8 + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + onchip_ram.s1 + false + true + true + true + + + long + 0 + false + true + true + true + + + com.altera.nios2.components.Nios2MultiplierDivider$OptMultiplier + EmbeddedMulFast + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + int + 8 + false + false + true + true + + + int + 8 + false + false + true + true + + + com.altera.nios2.components.Nios2MPU$OptRegionSize + _12 + false + false + true + true + + + com.altera.nios2.components.Nios2MPU$OptRegionSize + _12 + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.nios2.components.Nios2MMU$OptTlbNumEntries + _4 + false + false + true + true + + + com.altera.nios2.components.Nios2MMU$OptTlbNumEntries + _6 + false + false + true + true + + + com.altera.nios2.components.Nios2MMU$OptTlbPtrSz + _7 + false + false + true + true + + + com.altera.nios2.components.Nios2MMU$OptTlbNumWays + _16 + false + false + true + true + + + com.altera.nios2.components.Nios2MMU$OptProcessIDNumBits + _8 + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + true + false + false + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + false + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + true + true + + + long + 31 + false + true + true + true + + + java.lang.String + ]]> + false + true + true + true + + + int + 25 + false + true + true + true + + + com.altera.nios2.components.INios2Component$Impl + Tiny + false + true + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptBytes + _4096 + false + false + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptRamBlockType + Automatic + false + false + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptNumTCM + _0 + false + false + true + true + + + com.altera.nios2.components.Nios2ICache$OptBurstType + None + false + false + true + true + + + com.altera.entityinterfaces.IConnectionPoint + onchip_ram.s1 + false + true + true + true + + + long + 32 + false + true + true + true + + + java.lang.String + M512_MEMORY 0 M4K_MEMORY 1 M9K_MEMORY 0 M20K_MEMORY 0 M144K_MEMORY 0 MRAM_MEMORY 0 MLAB_MEMORY 0 ESB 0 EPCS 1 DSP 0 EMUL 1 HARDCOPY 0 LVDS_IO 0 ADDRESS_STALL 1 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 DSP_SHIFTER_BLOCK 0 + false + true + true + true + + + java.lang.String + Cyclone II + false + true + true + true + + + boolean + true + false + true + true + true + + + com.altera.nios2.components.Nios2Debug$OptLevel + Level1 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + true + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.nios2.components.Nios2Debug$OptOCIOnchipTrace + _128 + false + false + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptBytes + _2048 + false + false + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptRamBlockType + Automatic + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.nios2.components.Nios2AbstractCache$OptNumTCM + _0 + false + false + true + true + + + com.altera.nios2.components.Nios2DCache$OptLineSize + _32 + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + ]]> + false + true + true + true + + + int + 25 + false + true + true + true + + + boolean + false + false + true + true + true + + + long + 0 + false + false + true + true + + + long + 24000000 + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + cpu.jtag_debug_module + false + false + true + true + + + long + 32 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + false + true + + + int + 0 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + i_address + Output + 25 + address + + + i_read + Output + 1 + read + + + i_readdata + Input + 32 + readdata + + + i_readdatavalid + Input + 1 + readdatavalid + + + i_waitrequest + Input + 1 + waitrequest + + + false + cpu + jtag_debug_module + cpu.jtag_debug_module + 25202688 + 2048 + + + false + onchip_ram + s1 + onchip_ram.s1 + 25182208 + 4096 + + + false + sdram + s1 + sdram.s1 + 8388608 + 8388608 + + + false + epcs_flash + epcs_control_port + epcs_flash.epcs_control_port + 25204736 + 2048 + + + false + cfi_flash + s1 + cfi_flash.s1 + 20971520 + 4194304 + + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + false + true + + + int + 0 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + d_address + Output + 25 + address + + + d_byteenable + Output + 4 + byteenable + + + d_read + Output + 1 + read + + + d_readdata + Input + 32 + readdata + + + d_readdatavalid + Input + 1 + readdatavalid + + + d_waitrequest + Input + 1 + waitrequest + + + d_write + Output + 1 + write + + + d_writedata + Output + 32 + writedata + + + jtag_debug_module_debugaccess_to_roms + Output + 1 + debugaccess + + + false + cpu + jtag_debug_module + cpu.jtag_debug_module + 25202688 + 2048 + + + false + jtag_uart + avalon_jtag_slave + jtag_uart.avalon_jtag_slave + 25206784 + 8 + + + false + uart + s1 + uart.s1 + 25206816 + 32 + + + false + onchip_ram + s1 + onchip_ram.s1 + 25182208 + 4096 + + + false + sdram + s1 + sdram.s1 + 8388608 + 8388608 + + + false + pio_7seg + s1 + pio_7seg.s1 + 25206848 + 16 + + + false + pio_ledg + s1 + pio_ledg.s1 + 25206864 + 16 + + + false + pio_ledr + s1 + pio_ledr.s1 + 25206880 + 16 + + + false + epcs_flash + epcs_control_port + epcs_flash.epcs_control_port + 25204736 + 2048 + + + false + cfi_flash + s1 + cfi_flash.s1 + 20971520 + 4194304 + + + false + sysid + control_slave + sysid.control_slave + 25206912 + 8 + + + false + timer + s1 + timer.s1 + 25206944 + 32 + + + false + onewire + s1 + onewire.s1 + 1575536 + 8 + + + + + + com.altera.entityinterfaces.IConnectionPoint + cpu.data_master + false + true + true + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + INDIVIDUAL_REQUESTS + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + true + + d_irq + Input + 32 + irq + + + false + jtag_uart + irq + jtag_uart.irq + 1 + + + false + uart + irq + uart.irq + 2 + + + false + epcs_flash + irq + epcs_flash.irq + 0 + + + false + timer + irq + timer.irq + 4 + + + false + onewire + irq + onewire.irq + 3 + + + + + + embeddedsw.configuration.isMemoryDevice + 1 + + + embeddedsw.configuration.hideDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 2048 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + jtag_debug_module_address + Input + 9 + address + + + jtag_debug_module_begintransfer + Input + 1 + begintransfer + + + jtag_debug_module_byteenable + Input + 4 + byteenable + + + jtag_debug_module_debugaccess + Input + 1 + debugaccess + + + jtag_debug_module_readdata + Output + 32 + readdata + + + jtag_debug_module_resetrequest + Output + 1 + resetrequest + + + jtag_debug_module_select + Input + 1 + chipselect + + + jtag_debug_module_write + Input + 1 + write + + + jtag_debug_module_writedata + Input + 32 + writedata + + + + + + java.lang.String + + true + true + false + true + + + int + 8 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 8 + false + true + false + true + + + int + 0 + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios_custom_instruction + true + + dataa + Output + 32 + dataa + + + datab + Output + 32 + datab + + + result + Input + 32 + result + + + clk_en + Output + 1 + clk_en + + + reset + Output + 1 + reset + + + start + Output + 1 + start + + + done + Input + 1 + done + + + n + Output + 8 + n + + + a + Output + 5 + a + + + b + Output + 5 + b + + + c + Output + 5 + c + + + readra + Output + 1 + readra + + + readrb + Output + 1 + readrb + + + writerc + Output + 1 + writerc + + + + + + + embeddedsw.CMacro.WRITE_DEPTH + 16 + + + embeddedsw.CMacro.READ_DEPTH + 16 + + + embeddedsw.CMacro.WRITE_THRESHOLD + 8 + + + embeddedsw.CMacro.READ_THRESHOLD + 8 + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 16 + false + true + true + true + + + int + 8 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonJtagUART.AlteraAvalonJtagUART$JtagSimulationOptions + INTERACTIVE_ASCII_OUTPUT + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 16 + false + true + true + true + + + int + 8 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + rst_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isPrintableDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 2 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + true + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + av_chipselect + Input + 1 + chipselect + + + av_address + Input + 1 + address + + + av_read_n + Input + 1 + read_n + + + av_readdata + Output + 32 + readdata + + + av_write_n + Input + 1 + write_n + + + av_writedata + Input + 32 + writedata + + + av_waitrequest + Output + 1 + waitrequest + + + dataavailable + Output + 1 + dataavailable + + + readyfordata + Output + 1 + readyfordata + + + + + + com.altera.entityinterfaces.IConnectionPoint + jtag_uart.avalon_jtag_slave + false + true + true + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + av_irq + Output + 1 + irq + + + + + + + embeddedsw.CMacro.BAUD + 115200 + + + embeddedsw.CMacro.DATA_BITS + 8 + + + embeddedsw.CMacro.FIXED_BAUD + 1 + + + embeddedsw.CMacro.PARITY + 'N' + + + embeddedsw.CMacro.STOP_BITS + 1 + + + embeddedsw.CMacro.SYNC_REG_DEPTH + 2 + + + embeddedsw.CMacro.USE_CTS_RTS + 0 + + + embeddedsw.CMacro.USE_EOP_REGISTER + 0 + + + embeddedsw.CMacro.SIM_TRUE_BAUD + 0 + + + embeddedsw.CMacro.SIM_CHAR_STREAM + "" + + + embeddedsw.CMacro.FREQ + 24000000u + + + int + 115200 + false + true + true + true + + + double + 0.16 + true + true + true + true + + + long + 24000000 + false + true + true + true + + + int + 8 + false + true + true + true + + + boolean + true + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonUART.AlteraAvalonUART$UartParity + NONE + false + true + true + true + + + java.lang.String + + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 2 + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isPrintableDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + true + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 3 + address + + + begintransfer + Input + 1 + begintransfer + + + chipselect + Input + 1 + chipselect + + + read_n + Input + 1 + read_n + + + write_n + Input + 1 + write_n + + + writedata + Input + 16 + writedata + + + readdata + Output + 16 + readdata + + + dataavailable + Output + 1 + dataavailable + + + readyfordata + Output + 1 + readyfordata + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + rxd + Input + 1 + export + + + txd + Output + 1 + export + + + + + + com.altera.entityinterfaces.IConnectionPoint + uart.s1 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + irq + Output + 1 + irq + + + + + + + embeddedsw.CMacro.ALLOW_MRAM_SIM_CONTENTS_ONLY_FILE + 0 + + + embeddedsw.CMacro.INIT_CONTENTS_FILE + "onchip_ram" + + + embeddedsw.CMacro.NON_DEFAULT_INIT_FILE_ENABLED + 0 + + + embeddedsw.CMacro.GUI_RAM_BLOCK_TYPE + "Automatic" + + + embeddedsw.CMacro.WRITABLE + 1 + + + embeddedsw.CMacro.DUAL_PORT + 0 + + + embeddedsw.CMacro.SIZE_VALUE + 4096u + + + embeddedsw.CMacro.SIZE_MULTIPLE + 1 + + + embeddedsw.CMacro.CONTENTS_INFO + "" + + + embeddedsw.CMacro.RAM_BLOCK_TYPE + "Auto" + + + embeddedsw.CMacro.INIT_MEM_CONTENT + 1 + + + embeddedsw.CMacro.ALLOW_IN_SYSTEM_MEMORY_CONTENT_EDITOR + 0 + + + embeddedsw.CMacro.INSTANCE_ID + "NONE" + + + embeddedsw.CMacro.READ_DURING_WRITE_MODE + "DONT_CARE" + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 32 + + + embeddedsw.memoryInfo.HAS_BYTE_LANE + 0 + + + embeddedsw.memoryInfo.GENERATE_HEX + 1 + + + embeddedsw.memoryInfo.HEX_INSTALL_DIR + QPF_DIR + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonOnchipMemory.AlteraAvalonOnchipMemory$BlockType + AUTO + false + true + true + true + + + int + 32 + false + true + true + true + + + java.lang.String + Cyclone II + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + java.lang.String + onchip_ram + false + false + true + true + + + java.lang.String + NONE + false + false + true + true + + + long + 4096 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonOnchipMemory.AlteraAvalonOnchipMemory$ReadDuringWriteMode + DONT_CARE + false + false + true + true + + + boolean + false + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + + + + embeddedsw.configuration.isMemoryDevice + 1 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 4096 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk1 + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 4096 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 10 + address + + + chipselect + Input + 1 + chipselect + + + clken + Input + 1 + clken + + + readdata + Output + 32 + readdata + + + write + Input + 1 + write + + + writedata + Input + 32 + writedata + + + byteenable + Input + 4 + byteenable + + + + + + + embeddedsw.CMacro.REGISTER_DATA_IN + 1 + + + embeddedsw.CMacro.SIM_MODEL_BASE + 1 + + + embeddedsw.CMacro.SDRAM_DATA_WIDTH + 16 + + + embeddedsw.CMacro.SDRAM_ADDR_WIDTH + 22 + + + embeddedsw.CMacro.SDRAM_ROW_WIDTH + 12 + + + embeddedsw.CMacro.SDRAM_COL_WIDTH + 8 + + + embeddedsw.CMacro.SDRAM_NUM_CHIPSELECTS + 1 + + + embeddedsw.CMacro.SDRAM_NUM_BANKS + 4 + + + embeddedsw.CMacro.REFRESH_PERIOD + 15.625 + + + embeddedsw.CMacro.POWERUP_DELAY + 100.0 + + + embeddedsw.CMacro.CAS_LATENCY + 3 + + + embeddedsw.CMacro.T_RFC + 70.0 + + + embeddedsw.CMacro.T_RP + 20.0 + + + embeddedsw.CMacro.T_MRD + 3 + + + embeddedsw.CMacro.T_RCD + 20.0 + + + embeddedsw.CMacro.T_AC + 5.5 + + + embeddedsw.CMacro.T_WR + 14.0 + + + embeddedsw.CMacro.INIT_REFRESH_COMMANDS + 2 + + + embeddedsw.CMacro.INIT_NOP_DELAY + 0.0 + + + embeddedsw.CMacro.SHARED_DATA + 0 + + + embeddedsw.CMacro.STARVATION_INDICATOR + 0 + + + embeddedsw.CMacro.TRISTATE_BRIDGE_SLAVE + "" + + + embeddedsw.CMacro.IS_INITIALIZED + 1 + + + embeddedsw.CMacro.SDRAM_BANK_WIDTH + 2 + + + embeddedsw.CMacro.CONTENTS_INFO + "" + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 16 + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + double + 5.5 + false + true + true + true + + + long + 3 + false + true + true + true + + + double + 20.0 + false + true + true + true + + + double + 70.0 + false + true + true + true + + + double + 20.0 + false + true + true + true + + + double + 14.0 + false + true + true + true + + + int + 3 + false + true + true + true + + + long + 24000000 + false + true + true + true + + + int + 8 + false + true + true + true + + + int + 16 + false + true + true + true + + + boolean + true + false + true + true + true + + + double + 0.0 + false + true + true + true + + + int + 2 + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + false + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonSDRAMController.ModelMangler$PresetModels + custom + false + true + true + true + + + int + 4 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + true + true + + + double + 100.0 + false + true + true + true + + + double + 15.625 + false + true + true + true + + + boolean + true + false + true + true + true + + + int + 12 + false + true + true + true + + + long + 8388608 + true + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isMemoryDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 8388608 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 7 + false + true + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + az_addr + Input + 22 + address + + + az_be_n + Input + 2 + byteenable_n + + + az_cs + Input + 1 + chipselect + + + az_data + Input + 16 + writedata + + + az_rd_n + Input + 1 + read_n + + + az_wr_n + Input + 1 + write_n + + + za_data + Output + 16 + readdata + + + za_valid + Output + 1 + readdatavalid + + + za_waitrequest + Output + 1 + waitrequest + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + zs_addr + Output + 12 + export + + + zs_ba + Output + 2 + export + + + zs_cas_n + Output + 1 + export + + + zs_cke + Output + 1 + export + + + zs_cs_n + Output + 1 + export + + + zs_dq + Bidir + 16 + export + + + zs_dqm + Output + 2 + export + + + zs_ras_n + Output + 1 + export + + + zs_we_n + Output + 1 + export + + + + + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0x0 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 32 + + + embeddedsw.CMacro.RESET_VALUE + 0x0 + + + embeddedsw.CMacro.EDGE_TYPE + "NONE" + + + embeddedsw.CMacro.IRQ_TYPE + "NONE" + + + embeddedsw.CMacro.FREQ + 24000000u + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 24000000 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$Direction + Output + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$EdgeType + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$IrqType + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 32 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 32 + export + + + + + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0x0 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 8 + + + embeddedsw.CMacro.RESET_VALUE + 0x0 + + + embeddedsw.CMacro.EDGE_TYPE + "NONE" + + + embeddedsw.CMacro.IRQ_TYPE + "NONE" + + + embeddedsw.CMacro.FREQ + 24000000u + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 24000000 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$Direction + Output + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$EdgeType + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$IrqType + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 8 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 8 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 8 + readdata + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 8 + export + + + + + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0x0 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 10 + + + embeddedsw.CMacro.RESET_VALUE + 0x0 + + + embeddedsw.CMacro.EDGE_TYPE + "NONE" + + + embeddedsw.CMacro.IRQ_TYPE + "NONE" + + + embeddedsw.CMacro.FREQ + 24000000u + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 24000000 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$Direction + Output + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$EdgeType + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonPIO.AlteraAvalonPIO$IrqType + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 10 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 10 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 10 + readdata + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 10 + export + + + + + + + embeddedsw.CMacro.REGISTER_OFFSET + 512 + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 32 + + + embeddedsw.memoryInfo.MEM_INIT_FILENAME + epcs_flash_boot_rom + + + embeddedsw.memoryInfo.IS_EPCS + 1 + + + embeddedsw.memoryInfo.IS_FLASH + 1 + + + embeddedsw.memoryInfo.GENERATE_HEX + 1 + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.GENERATE_FLASH + 1 + + + embeddedsw.memoryInfo.HEX_INSTALL_DIR + SIM_DIR + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + embeddedsw.memoryInfo.FLASH_INSTALL_DIR + APP_DIR + + + boolean + true + false + true + true + true + + + java.lang.String + Cyclone II + false + true + false + true + + + boolean + true + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isNonVolatileStorage + 1 + + + embeddedsw.configuration.isFlash + 1 + + + embeddedsw.configuration.isMemoryDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 2048 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 9 + address + + + chipselect + Input + 1 + chipselect + + + dataavailable + Output + 1 + dataavailable + + + endofpacket + Output + 1 + endofpacket + + + read_n + Input + 1 + read_n + + + readdata + Output + 32 + readdata + + + readyfordata + Output + 1 + readyfordata + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + + + + com.altera.entityinterfaces.IConnectionPoint + epcs_flash.epcs_control_port + false + true + true + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + irq + Output + 1 + irq + + + + + + + embeddedsw.CMacro.SETUP_VALUE + 90 + + + embeddedsw.CMacro.WAIT_VALUE + 0 + + + embeddedsw.CMacro.HOLD_VALUE + 0 + + + embeddedsw.CMacro.TIMING_UNITS + "ns" + + + embeddedsw.CMacro.SIZE + 4194304u + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 8 + + + embeddedsw.memoryInfo.HAS_BYTE_LANE + 0 + + + embeddedsw.memoryInfo.IS_FLASH + 1 + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.GENERATE_FLASH + 1 + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + embeddedsw.memoryInfo.FLASH_INSTALL_DIR + APP_DIR + + + double + 0.0 + true + true + true + true + + + double + 125.0 + true + true + true + true + + + double + 0.0 + true + true + true + true + + + int + 22 + false + true + true + true + + + long + 24000000 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonCommonFlashInterface.FlashCorePresets + CUSTOM + false + true + true + true + + + int + 8 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 90 + false + true + true + true + + + [Ljava.lang.String; + + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonCommonFlashInterface.FlashTimingUnits + NS + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + + + + embeddedsw.configuration.isNonVolatileStorage + 1 + + + embeddedsw.configuration.isFlash + 1 + + + embeddedsw.configuration.isMemoryDevice + 1 + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 4194304 + true + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 90 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Nanoseconds + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_tristate + false + + data + Bidir + 8 + data + + + address + Input + 22 + address + + + read_n + Input + 1 + read_n + + + write_n + Input + 1 + write_n + + + select_n + Input + 1 + chipselect_n + + + + + + + boolean + true + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 1 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + tri_state_bridge_flash.tristate_master + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 0 + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_tristate + true + + false + cfi_flash + s1 + cfi_flash.s1 + 20971520 + 4194304 + + + + + + + embeddedsw.CMacro.ID + 85295031u + + + embeddedsw.CMacro.TIMESTAMP + 1294693433u + + + long + 85295031 + true + true + true + true + + + long + 1294693433 + true + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clock + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 2 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 1 + address + + + readdata + Output + 32 + readdata + + + + + + + embeddedsw.CMacro.ALWAYS_RUN + 0 + + + embeddedsw.CMacro.FIXED_PERIOD + 0 + + + embeddedsw.CMacro.SNAPSHOT + 1 + + + embeddedsw.CMacro.PERIOD + 1 + + + embeddedsw.CMacro.PERIOD_UNITS + "ms" + + + embeddedsw.CMacro.RESET_OUTPUT + 0 + + + embeddedsw.CMacro.TIMEOUT_PULSE_OUTPUT + 0 + + + embeddedsw.CMacro.FREQ + 24000000u + + + embeddedsw.CMacro.LOAD_VALUE + 23999ULL + + + embeddedsw.CMacro.COUNTER_SIZE + 32 + + + embeddedsw.CMacro.MULT + 0.0010 + + + embeddedsw.CMacro.TICKS_PER_SEC + 1000u + + + boolean + false + false + true + true + true + + + int + 32 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonTimer.AlteraAvalonTimer$TimerPeriodUnit + MSEC + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + long + 24000000 + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.components.avalon.AlteraAvalonTimer.TimerPresets + CUSTOM + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isTimerDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 3 + address + + + writedata + Input + 16 + writedata + + + readdata + Output + 16 + readdata + + + chipselect + Input + 1 + chipselect + + + write_n + Input + 1 + write_n + + + + + + com.altera.entityinterfaces.IConnectionPoint + timer.s1 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + irq + Output + 1 + irq + + + + + + + embeddedsw.CMacro.BTP_N + "5.0" + + + embeddedsw.CMacro.BTP_O + "1.0" + + + embeddedsw.CMacro.CDR_E + 0 + + + embeddedsw.CMacro.CDR_N + 119 + + + embeddedsw.CMacro.CDR_O + 23 + + + embeddedsw.CMacro.F_DLY + 65536 + + + embeddedsw.CMacro.OVD_E + 1 + + + embeddedsw.CMacro.OWN + 2 + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 32 + false + false + false + true + + + int + 1 + false + false + false + true + + + int + 2 + false + true + true + true + + + java.lang.String + 5.0 + false + true + true + true + + + java.lang.String + 1.0 + false + true + true + true + + + int + 24000000 + false + true + true + true + + + int + 119 + true + true + true + true + + + int + 23 + true + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 24000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clock_reset + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + rst + Input + 1 + reset + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + true + true + + + int + 0 + false + true + false + true + + + long + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock_reset + false + true + false + true + + + java.lang.String + clock_reset_reset + false + true + false + true + + + int + 8 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + bus_ren + Input + 1 + read + + + bus_wen + Input + 1 + write + + + bus_adr + Input + 1 + address + + + bus_wdt + Input + 32 + writedata + + + bus_rdt + Output + 32 + readdata + + + + + + com.altera.entityinterfaces.IConnectionPoint + onewire.s1 + false + true + true + true + + + java.lang.String + clock_reset + false + true + false + true + + + java.lang.String + clock_reset_reset + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + bus_irq + Output + 1 + irq + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + owr_p + Output + 2 + export + + + owr_e + Output + 2 + export + + + owr_i + Input + 2 + export + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + cpu + clk + + + + int + 1 + false + true + true + true + + + long + 0x01809000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + instruction_master + cpu + jtag_debug_module + + + + int + 1 + false + true + true + true + + + long + 0x01809000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + cpu + jtag_debug_module + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + jtag_uart + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + jtag_uart + avalon_jtag_slave + + + + int + 1 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + d_irq + jtag_uart + irq + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + uart + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a020 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + uart + s1 + + + + int + 2 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + d_irq + uart + irq + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + onchip_ram + clk1 + + + + int + 1 + false + true + true + true + + + long + 0x01804000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + instruction_master + onchip_ram + s1 + + + + int + 1 + false + true + true + true + + + long + 0x01804000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + onchip_ram + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + sdram + clk + + + + int + 1 + false + true + true + true + + + long + 0x00800000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + instruction_master + sdram + s1 + + + + int + 1 + false + true + true + true + + + long + 0x00800000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + sdram + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + pio_7seg + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a040 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + pio_7seg + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + pio_ledg + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a050 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + pio_ledg + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + pio_ledr + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a060 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + pio_ledr + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + epcs_flash + clk + + + + int + 1 + false + true + true + true + + + long + 0x01809800 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + instruction_master + epcs_flash + epcs_control_port + + + + int + 1 + false + true + true + true + + + long + 0x01809800 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + epcs_flash + epcs_control_port + + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + d_irq + epcs_flash + irq + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + cfi_flash + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + tri_state_bridge_flash + clk + + + + int + 1 + false + true + true + true + + + long + 0x0000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + instruction_master + tri_state_bridge_flash + avalon_slave + + + + int + 1 + false + true + true + true + + + long + 0x0000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + tri_state_bridge_flash + avalon_slave + + + + int + 1 + false + true + true + true + + + long + 0x01400000 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + tri_state_bridge_flash + tristate_master + cfi_flash + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + sysid + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a080 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + sysid + control_slave + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + timer + clk + + + + int + 1 + false + true + true + true + + + long + 0x0180a0a0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + timer + s1 + + + + int + 4 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + d_irq + timer + irq + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk + clk + onewire + clock_reset + + + + int + 1 + false + true + true + true + + + long + 0x00180a70 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + data_master + onewire + s1 + + + + int + 3 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + cpu + d_irq + onewire + irq + + + 1 + altera_nios2 + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Nios II Processor + 10.0 + + + 1 + avalon_tristate_slave + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Tristate Slave + 10.0 + + + 1 + altera_avalon_uart + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + UART (RS-232 Serial Port) + 10.0 + + + 1 + altera_avalon_sysid + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + System ID Peripheral + 10.0 + + + 1 + avalon_tristate_master + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Tristate Master + 10.0 + + + 5 + interrupt + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Interrupt Connection + 10.0 + + + 14 + clock + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Clock Connection + 10.0 + + + 5 + conduit + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Conduit Endpoint + 7.1 + + + 3 + altera_avalon_pio + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + PIO (Parallel I/O) + 10.0 + + + 14 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 10.0 + + + 1 + conduit_end + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Conduit + 10.0 + + + 1 + altera_avalon_jtag_uart + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + JTAG UART + 10.0 + + + 1 + interrupt_sender + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Interrupt Sender + 10.0 + + + 1 + altera_avalon_tri_state_bridge + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Avalon-MM Tristate Bridge + 10.0 + + + 1 + sockit_owm + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + 1-wire (onewire) master + 1.3 + + + 2 + avalon_master + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Master + 10.0 + + + 1 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 10.0 + + + 1 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 10.0 + + + 1 + reset_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Output + 10.0 + + + 1 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 10.0 + + + 1 + altera_avalon_new_sdram_controller + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + SDRAM Controller + 10.0 + + + 1 + nios_custom_instruction_master + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Custom Instruction Master + 10.0 + + + 1 + altera_avalon_epcs_flash_controller + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + EPCS Serial Flash Controller + 10.0 + + + 1 + avalon_tristate + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Avalon Memory Mapped Tristate Connection + 10.0 + + + 1 + altera_avalon_onchip_memory2 + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + On-Chip Memory (RAM or ROM) + 10.0 + + + 1 + avalon_slave + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Slave + 10.0 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Clock Source + 10.0 + + + 1 + interrupt_receiver + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Interrupt Receiver + 10.0 + + + 1 + altera_avalon_cfi_flash + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Flash Memory Interface (CFI) + 10.0 + + + 12 + avalon_slave + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Slave + 10.0 + + + 18 + avalon + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Avalon Memory Mapped Connection + 6.1 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Output + 10.0 + + + 4 + interrupt_sender + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Interrupt Sender + 10.0 + + + 1 + altera_avalon_timer + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Interval Timer + 10.0 + + 10.0sp1 262 + 0022FB59BE740000012D71BDE49D + Index: trunk/demo/Terasic_DE1/soc.sopc =================================================================== --- trunk/demo/Terasic_DE1/soc.sopc (nonexistent) +++ trunk/demo/Terasic_DE1/soc.sopc (revision 3) @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + M512_MEMORY 0 M4K_MEMORY 1 M9K_MEMORY 0 M20K_MEMORY 0 M144K_MEMORY 0 MRAM_MEMORY 0 MLAB_MEMORY 0 ESB 0 EPCS 1 DSP 0 EMUL 1 HARDCOPY 0 LVDS_IO 0 ADDRESS_STALL 1 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 DSP_SHIFTER_BLOCK 0 + + + + + + + + + + + + + + + ]]> + + + + + cpu.jtag_debug_module + + + + + + + + + INTERACTIVE_ASCII_OUTPUT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: trunk/demo/Terasic_DE1/software/onewire_ucosii/onewire_ucosii.c =================================================================== --- trunk/demo/Terasic_DE1/software/onewire_ucosii/onewire_ucosii.c (nonexistent) +++ trunk/demo/Terasic_DE1/software/onewire_ucosii/onewire_ucosii.c (revision 3) @@ -0,0 +1,202 @@ +/************************************************************************* +* Copyright (c) 2004 Altera Corporation, San Jose, California, USA. * +* All rights reserved. All use of this software and documentation is * +* subject to the License Agreement located at the end of this file below.* +************************************************************************** +* Description: * +* The following is a simple hello world program running MicroC/OS-II.The * +* purpose of the design is to be a very simple application that just * +* demonstrates MicroC/OS-II running on NIOS II.The design doesn't account* +* for issues such as checking system call return codes. etc. * +* * +* Requirements: * +* -Supported Example Hardware Platforms * +* Standard * +* Full Featured * +* Low Cost * +* -Supported Development Boards * +* Nios II Development Board, Stratix II Edition * +* Nios Development Board, Stratix Professional Edition * +* Nios Development Board, Stratix Edition * +* Nios Development Board, Cyclone Edition * +* -System Library Settings * +* RTOS Type - MicroC/OS-II * +* Periodic System Timer * +* -Know Issues * +* If this design is run on the ISS, terminal output will take several* +* minutes per iteration. * +**************************************************************************/ + + +#include +#include "includes.h" + +#include "ownet.h" +#include "temp10.h" +#include "findtype.h" + +// defines +#define MAXDEVICES 20 +#define ONEWIRE_P 0 + +// local functions +void DisplaySerialNum(uchar sn[8]); + +/* Definition of Task Stacks */ +#define TASK_STACKSIZE 2048 +OS_STK task1_stk[TASK_STACKSIZE]; +OS_STK task2_stk[TASK_STACKSIZE]; + +/* Definition of Task Priorities */ + +#define TASK1_PRIORITY 1 +#define TASK2_PRIORITY 2 + +/* Prints "Hello World" and sleeps for three seconds */ +void task1(void* pdata) +{ + uchar FamilySN[MAXDEVICES][8]; + float current_temp; + int i = 0; + int j = 0; + int NumDevices = 0; + SMALLINT didRead = 0; + + //use port number for 1-wire + uchar portnum = ONEWIRE_P; + + //---------------------------------------- + // Introduction header + printf("\r\nTemperature\r\n"); + + // attempt to acquire the 1-Wire Net + if (!owAcquire(portnum,NULL)) + { + printf("Acquire failed\r\n"); + while(owHasErrors()) + printf(" - Error %d\r\n", owGetErrorNum()); + return; + } + printf("Acquire done\r\n"); + + do + { + j = 0; + // Find the device(s) + NumDevices = FindDevices(portnum, FamilySN, 0x28, MAXDEVICES); + if (NumDevices>0) + { + printf("\r\n"); + // read the temperature and print serial number and temperature + for (i = NumDevices; i; i--) + { + printf("(%d) ", j++); + DisplaySerialNum(FamilySN[i-1]); + didRead = ReadTemperature(portnum, FamilySN[i-1],¤t_temp); + + if (didRead) + { + printf(" %5.1f Celsius\r\n", current_temp); + } + else + { + printf(" Convert failed. Device is"); + if(!owVerify(portnum, FALSE)) + printf(" not"); + printf(" present.\r\n"); + while(owHasErrors()) + printf(" - Error %d\r\n", owGetErrorNum()); + } + + } + } + else + printf("No temperature devices found!\r\n"); + + printf("\r\nPress any key to continue\r\n"); + i = getchar(); + } + while (i!='q'); + + // release the 1-Wire Net + owRelease(portnum); +} + +/* Prints "Hello World" and sleeps for three seconds */ +void task2(void* pdata) +{ + while (1) + { + printf("Hello from task2\n"); + OSTimeDlyHMSM(0, 0, 3, 0); + } +} +/* The main function creates two task and starts multi-tasking */ +int main(void) +{ + printf("Hello before OS\n"); + + OSTaskCreateExt(task1, + NULL, + (void *)&task1_stk[TASK_STACKSIZE-1], + TASK1_PRIORITY, + TASK1_PRIORITY, + task1_stk, + TASK_STACKSIZE, + NULL, + 0); + + + OSTaskCreateExt(task2, + NULL, + (void *)&task2_stk[TASK_STACKSIZE-1], + TASK2_PRIORITY, + TASK2_PRIORITY, + task2_stk, + TASK_STACKSIZE, + NULL, + 0); + OSStart(); + return 0; +} + +/****************************************************************************** +* * +* License Agreement * +* * +* Copyright (c) 2004 Altera Corporation, San Jose, California, USA. * +* All rights reserved. * +* * +* Permission is hereby granted, free of charge, to any person obtaining a * +* copy of this software and associated documentation files (the "Software"), * +* to deal in the Software without restriction, including without limitation * +* the rights to use, copy, modify, merge, publish, distribute, sublicense, * +* and/or sell copies of the Software, and to permit persons to whom the * +* Software is furnished to do so, subject to the following conditions: * +* * +* The above copyright notice and this permission notice shall be included in * +* all copies or substantial portions of the Software. * +* * +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * +* DEALINGS IN THE SOFTWARE. * +* * +* This agreement shall be governed in all respects by the laws of the State * +* of California and by the laws of the United States of America. * +* Altera does not recommend, suggest or require that this reference design * +* file be used in conjunction or combination with any other product. * +******************************************************************************/ + +// ------------------------------------------------------------------------------- +// Read and print the serial number. +// +void DisplaySerialNum(uchar sn[8]) +{ + int i; + for (i = 7; i>=0; i--) + printf("%02X", (int)sn[i]); +}
trunk/demo/Terasic_DE1/software/onewire_ucosii/onewire_ucosii.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/demo/Terasic_DE1/software/onewire/onewire.c =================================================================== --- trunk/demo/Terasic_DE1/software/onewire/onewire.c (nonexistent) +++ trunk/demo/Terasic_DE1/software/onewire/onewire.c (revision 3) @@ -0,0 +1,122 @@ +/* + * "Hello World" example. + * + * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on + * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example + * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT + * device in your system's hardware. + * The memory footprint of this hosted application is ~69 kbytes by default + * using the standard reference design. + * + * For a reduced footprint version of this template, and an explanation of how + * to reduce the memory footprint for a given application, see the + * "small_hello_world" template. + * + */ + +#include +#include "system.h" + +#include "ownet.h" +#include "findtype.h" +#include "temp10.h" +#include "temp28.h" +#include "temp42.h" + +// defines +#define MAXDEVICES 20 +#define ONEWIRE_P 0 + +// local functions +void DisplaySerialNum(uchar sn[8]); + +int main() +{ + uchar FamilySN[MAXDEVICES][8]; + float current_temp; + int i = 0; + int j = 0; + int NumDevices = 0; + SMALLINT didRead = 0; + + //use port number for 1-wire + uchar portnum = ONEWIRE_P; + + //---------------------------------------- + // Introduction header + printf("\r\nTemperature device demo:\r\n"); + + // attempt to acquire the 1-Wire Net + if (!owAcquire(portnum,NULL)) + { + printf("Acquire failed\r\n"); +#ifdef SOCKIT_OWM_ERR_ENABLE + while(owHasErrors()) + printf(" - Error %d\r\n", owGetErrorNum()); + return 1; +#endif + } + + do + { + j = 0; + // Find the device(s) + NumDevices = 0; + NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x10, MAXDEVICES-NumDevices); + NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x28, MAXDEVICES-NumDevices); + NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x42, MAXDEVICES-NumDevices); + if (NumDevices) + { + printf("\r\n"); + // read the temperature and print serial number and temperature + for (i = NumDevices; i; i--) + { + printf("(%d) ", j++); + DisplaySerialNum(FamilySN[i-1]); + if (FamilySN[i-1][0] == 0x10) + didRead = ReadTemperature10(portnum, FamilySN[i-1],¤t_temp); + if (FamilySN[i-1][0] == 0x28) + didRead = ReadTemperature28(portnum, FamilySN[i-1],¤t_temp); + if (FamilySN[i-1][0] == 0x42) + didRead = ReadTemperature42(portnum, FamilySN[i-1],¤t_temp); + + if (didRead) + { + printf(" %5.1f Celsius\r\n", current_temp); + } + else + { + printf(" Convert failed. Device is"); + if(!owVerify(portnum, FALSE)) + printf(" not"); + printf(" present.\r\n"); +#ifdef SOCKIT_OWM_ERR_ENABLE + while(owHasErrors()) + printf(" - Error %d\r\n", owGetErrorNum()); +#endif + } + + } + } + else + printf("No temperature devices found!\r\n"); + + printf("\r\nPress any key to continue\r\n"); + i = getchar(); + } + while (i!='q'); + + // release the 1-Wire Net + owRelease(portnum); + + return 0; +} +// ------------------------------------------------------------------------------- +// Read and print the serial number. +// +void DisplaySerialNum(uchar sn[8]) +{ + int i; + for (i = 7; i>=0; i--) + printf("%02X", (int)sn[i]); +}
trunk/demo/Terasic_DE1/software/onewire/onewire.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/demo/Terasic_DE1/debouncer.v =================================================================== --- trunk/demo/Terasic_DE1/debouncer.v (nonexistent) +++ trunk/demo/Terasic_DE1/debouncer.v (revision 3) @@ -0,0 +1,29 @@ +module debouncer #( + parameter CN = 8, // counter number (sequence length) + parameter CW = $clog2(CN) // counter width in bits +)( + input clk, // clock + input d_i, // debouncer input + output reg d_o // debouncer output +); + +reg [CW-1:0] cnt; // counter +reg d_r; // input register + +// TODO, check if this is done acording to Altera specifications +initial cnt <= 0; + +// prevention of metastability problems +always @ (posedge clk) +d_r <= d_i; + +// the counter should start running on a change +always @ (posedge clk) +if (|cnt) cnt <= cnt - 1; +else if (d_r^d_o) cnt <= CN; + +// when the counter is zero the output should follow the input +always @ (posedge clk) +if (~|cnt) d_o <= d_r; + +endmodule Index: trunk/demo/Terasic_DE1/DE1_soc_nios2.v =================================================================== --- trunk/demo/Terasic_DE1/DE1_soc_nios2.v (nonexistent) +++ trunk/demo/Terasic_DE1/DE1_soc_nios2.v (revision 3) @@ -0,0 +1,171 @@ +////////////////////////////////////////////////////////////////////////////// +// Copyright 2010 by Iztok Jeras (based on code by Terasic Technologies Inc.) +////////////////////////////////////////////////////////////////////////////// + +module DE1_soc_nios2 ( +// Clock Input +input [1:0] CLOCK_24, // 24 MHz +input [1:0] CLOCK_27, // 27 MHz +input CLOCK_50, // 50 MHz +input EXT_CLOCK, // External Clock +// Push Button +input [3:0] KEY, // Pushbutton[3:0] +// DPDT Switch +input [9:0] SW, // Toggle Switch[9:0] +// 7-SEG Dispaly +output [6:0] HEX0, // Seven Segment Digit 0 +output [6:0] HEX1, // Seven Segment Digit 1 +output [6:0] HEX2, // Seven Segment Digit 2 +output [6:0] HEX3, // Seven Segment Digit 3 +// LED +output [7:0] LEDG, // LED Green[7:0] +output [9:0] LEDR, // LED Red[9:0] +// UART +output UART_TXD, // UART Transmitter +input UART_RXD, // UART Receiver +// SDRAM Interface +output DRAM_CLK, // SDRAM Clock +output DRAM_CKE, // SDRAM Clock Enable +output DRAM_CS_N, // SDRAM Chip Select +output DRAM_WE_N, // SDRAM Write Enable +output DRAM_CAS_N, // SDRAM Column Address Strobe +output DRAM_RAS_N, // SDRAM Row Address Strobe +output [1:0] DRAM_BA, // SDRAM Bank Address +output [11:0] DRAM_ADDR, // SDRAM Address bus 12 Bits +inout [15:0] DRAM_DQ, // SDRAM Data bus 16 Bits +output [1:0] DRAM_DQM, // SDRAM Byte Data Mask +// Flash Interface +output FL_RST_N, // FLASH Reset +output FL_CE_N, // FLASH Chip Enable +output FL_WE_N, // FLASH Write Enable +output FL_OE_N, // FLASH Output Enable +output [21:0] FL_ADDR, // FLASH Address bus 22 Bits +inout [7:0] FL_DQ, // FLASH Data bus 8 Bits +// SRAM Interface +output SRAM_CE_N, // SRAM Chip Enable +output SRAM_WE_N, // SRAM Write Enable +output SRAM_OE_N, // SRAM Output Enable +output [17:0] SRAM_ADDR, // SRAM Address bus 18 Bits +output [1:0] SRAM_B_N, // SRAM Byte Data Mask +inout [15:0] SRAM_DQ, // SRAM Data bus 16 Bits +// SD_Card Interface +inout SD_DAT, // SD Card Data +inout SD_DAT3, // SD Card Data 3 +inout SD_CMD, // SD Card Command Signal +output SD_CLK, // SD Card Clock +// USB JTAG link +input TDI, // CPLD -> FPGA (data in) +input TCK, // CPLD -> FPGA (clk) +input TCS, // CPLD -> FPGA (CS) +output TDO, // FPGA -> CPLD (data out) +// I2C +inout I2C_SDAT, // I2C Data +output I2C_SCLK, // I2C Clock +// PS2 +inout PS2_DAT, // PS2 Data +inout PS2_CLK, // PS2 Clock +// VGA +output VGA_HS, // VGA H_SYNC +output VGA_VS, // VGA V_SYNC +output [3:0] VGA_R, // VGA Red[3:0] +output [3:0] VGA_G, // VGA Green[3:0] +output [3:0] VGA_B, // VGA Blue[3:0] +// Audio CODEC +inout AUD_ADCLRCK, // Audio CODEC ADC LR Clock +input AUD_ADCDAT, // Audio CODEC ADC Data +inout AUD_DACLRCK, // Audio CODEC DAC LR Clock +output AUD_DACDAT, // Audio CODEC DAC Data +inout AUD_BCLK, // Audio CODEC Bit-Stream Clock +output AUD_XCK, // Audio CODEC Chip Clock +// GPIO +inout [35:0] GPIO_0, // GPIO Connection 0 +inout [35:0] GPIO_1 // GPIO Connection 1 +); + +localparam FRQ = 24000000; // 24MHz + +// system clock and reset +wire clk, rst; + +// debounced button signals +wire [3:0] btn; + +// 7 segment display negated signals +wire [31:0] seg7; + +// 1-wire +wire [1:0] owr_p; +wire [1:0] owr_e; +wire [1:0] owr_i; + +// All inout port turn to tri-state +assign SD_DAT = 1'bz; +//assign I2C_SDAT = 1'bz; +assign AUD_ADCLRCK = 1'bz; +assign AUD_DACLRCK = 1'bz; +assign AUD_BCLK = 1'bz; +assign GPIO_0 = 36'hzzzzzzzzz; +assign GPIO_1 = 36'hzzzzzzzzz; + +// set system clock to 24MHz +assign clk = CLOCK_24[0]; +assign rst = btn[0]; + +// debouncing of command buttons (buttons are active low) +debouncer #(.CN (FRQ/100)) debouncer_i [3:0] (.clk (clk), .d_i (~KEY), .d_o (btn)); + +// soc_nios RTL instance +soc soc_i ( + // 1) global signals: + .clk (clk), + .reset_n (~rst), + // the_epcs_flash + .ds_MISO_from_the_epcs_flash (), + // the_pio_7seg + .out_port_from_the_pio_7seg (seg7), + // the_pio_ledg + .out_port_from_the_pio_ledg (LEDG), + // the_pio_ledr + .out_port_from_the_pio_ledr (LEDR), + // the_sdram + .zs_cke_from_the_sdram (DRAM_CKE), + .zs_cs_n_from_the_sdram (DRAM_CS_N), + .zs_we_n_from_the_sdram (DRAM_WE_N), + .zs_cas_n_from_the_sdram (DRAM_CAS_N), + .zs_ras_n_from_the_sdram (DRAM_RAS_N), + .zs_ba_from_the_sdram (DRAM_BA), + .zs_addr_from_the_sdram (DRAM_ADDR), + .zs_dq_to_and_from_the_sdram (DRAM_DQ), + .zs_dqm_from_the_sdram (DRAM_DQM), + // the_tri_state_bridge_flash_avalon_slave + .select_n_to_the_cfi_flash (FL_CE_N), + .write_n_to_the_cfi_flash (FL_WE_N), + .read_n_to_the_cfi_flash (FL_OE_N), + .address_to_the_cfi_flash (FL_ADDR), + .data_to_and_from_the_cfi_flash (FL_DQ), + // the_uart + .rxd_to_the_uart (UART_TXD), + .txd_from_the_uart (UART_RXD), + // onewire + .owr_p_from_the_onewire (owr_p), + .owr_e_from_the_onewire (owr_e), + .owr_i_to_the_onewire (owr_i) +); + +// 1-wire +assign PS2_DAT = (owr_p [0] | owr_e [0]) ? owr_p [0] : 1'bz; +assign PS2_CLK = (owr_p [1] | owr_e [1]) ? owr_p [1] : 1'bz; +assign owr_i = {PS2_CLK, PS2_DAT}; + +// SDRAM Interface +assign DRAM_CLK = ~clk; // SDRAM Clock +// Flash Interface +assign FL_RST_N = ~rst; // FLASH Reset + +// active low 7 segment outputs +assign HEX0 = ~seg7[0*8+:7]; +assign HEX1 = ~seg7[1*8+:7]; +assign HEX2 = ~seg7[2*8+:7]; +assign HEX3 = ~seg7[3*8+:7]; + +endmodule
trunk/demo/Terasic_DE1/DE1_soc_nios2.v Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/demo/Terasic_DE1/DE1_soc_nios2.qpf =================================================================== --- trunk/demo/Terasic_DE1/DE1_soc_nios2.qpf (nonexistent) +++ trunk/demo/Terasic_DE1/DE1_soc_nios2.qpf (revision 3) @@ -0,0 +1,23 @@ +# Copyright (C) 1991-2006 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. + + + +QUARTUS_VERSION = "9.1" +DATE = "14:33:53 April 27, 2006" + + +# Revisions + +PROJECT_REVISION = "DE1_soc_nios2" Index: trunk/demo/Terasic_DE1/DE1_soc_nios2.stp =================================================================== --- trunk/demo/Terasic_DE1/DE1_soc_nios2.stp (nonexistent) +++ trunk/demo/Terasic_DE1/DE1_soc_nios2.stp (revision 3) @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'soc:soc_i|onewire:the_onewire|bus_wen' == either edge + + + + + + + + + + + + + + + + 11111111111111111111111111111111111111111111111111111111111111111111111100000000000000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + + 'soc:soc_i|onewire:the_onewire|bus_ren' == high && 'soc:soc_i|onewire:the_onewire|bus_wen' == high && 'soc:soc_i|onewire:the_onewire|owr_e' == either edge && 'soc:soc_i|onewire:the_onewire|owr_i' == either edge && 'soc:soc_i|onewire:the_onewire|owr_p' == either edge + + + + + + + + + + + + + + + + + + + 0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000001010100000000100000000001000111111000100000001010000000000000111001000000000000000000010101000000001000000000010001111110001000000010100000000000001110010000000000000000000101010000000010000000000100011111100010000000101000000000000011100100000000000000000000010000000000000000000000000000000000000000000100000000000001000000000000000000000000000100000000000000000000000000000000000000000001000000000000010000001000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000001001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000101100000000000001000000000000000000000000000000000000001000000000000010000000000000001011000000000000010000000000000000000000000000000000000010000000000000100000000000000010110000000000000100000000000000000000000000000000000000100000000000001000000000000000101100000000000001000000000000000000000000000000000000001000000000000010000000000000001011000000000000010000000000000000000000000000000000000010000000000000100000000000000000100000000000000100000000000000000000000000000000000000100000000000001000000000000000001000000000000001000000000000000000000000000000000000001000000000000010000000000000000010000000000000010000000000000000000000000000000000000010000000000000100000000000000000100000000000000100000000000000000000000000000000000000100000000000001000000000000000001000000000000001000000000000000000000000000000000000001000000000000010000000000000000010000000000000010000000000000000000000000000000000000010000000000000100000000000000000100000000000000100000000000000000000000000000000000000100000000000001000000000000000001000000000000001000000000000000000000000000000000000001000000000000010000000000000000010000000000000010000000000000000000000000000000000000010000000000000100000000000000000100000000000000100000000000000000000000000000000000000100000000000001000000000000000001000000000000001000000000000000000000000000000000000001000000000000010000000000000000010000000000000010000000000000000000000000000000000000010000000000000100000000000000000100000000000000100000000000000000000000000000000000000100000000000001000000000000000001000000000000001000000000000000000000000000000000000001000000000000010000000000000000010000000000000010000000000000000000000000000000000000010000000000000100000000000000000000000000000000100000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000100000000000000000000000000000000000000000000000000000000000000010000000000000100000001000000000000000000000000000000000000000000000000000000000000000100000000000001000000010000000000000000000000000000000000000000000000000000000000000001000000000000010000000100000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000100000001000000000000000000000000000000000000000000000000100000000000001000000000000001000000010000000000000000000000000000000000000000000000001000000000000010000000000000010000000100000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000001111100010111100011101111111000000000000000000000000000000000010000000000000100000000011111000101111000111011111110000000000000000000000000000000000100000000000001000000000111110001011110001110111111100000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000100110100000001000000000111111000000000000000000000000000000000100000000000001000000001001101000000010000000001111110000000000000000000000000000000001000000000000010000000010011010000000100000000011111100000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000001001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000100000001010000000000000111001000000000000000000000000000000001000000000000010000000001000000010100000000000001110010000000000000000000000000000000010000000000000100000000010000000101000000000000011100100000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000000000000000001000000000000010000000000000000001000000000000010000000000000000000000000000000000000010000000000000100000000000000000010000000000000100000000000000000000000000000000000000100000000000001000000000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000101010000000010000000000100011111100000000000010000000000000100000000000000000000000001010100000000100000000001000111111000000000000100000000000001000000000000000000000000010101000000001000000000010001111110000000000001000000000000010000000000000000000000000 + 1111111111111111111111111111111111111111111111111111111111111111T111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 + + + + + + + + + + + Index: trunk/doc/sockit_owr.odt =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/sockit_owr.odt =================================================================== --- trunk/doc/sockit_owr.odt (nonexistent) +++ trunk/doc/sockit_owr.odt (revision 3)
trunk/doc/sockit_owr.odt Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/doc/sockit_owr.odg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/sockit_owr.odg =================================================================== --- trunk/doc/sockit_owr.odg (nonexistent) +++ trunk/doc/sockit_owr.odg (revision 3)
trunk/doc/sockit_owr.odg Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/TODO =================================================================== --- trunk/TODO (nonexistent) +++ trunk/TODO (revision 3) @@ -0,0 +1,5 @@ +TODO: +1. check the delay code (why is usleep longer than 1us), find macro for detecting OS +2. run some more uCOS-II tests +2. write Linux kernel driver +3. port owfs Index: trunk/hdl/onewire_tb.v =================================================================== --- trunk/hdl/onewire_tb.v (nonexistent) +++ trunk/hdl/onewire_tb.v (revision 3) @@ -0,0 +1,542 @@ +////////////////////////////////////////////////////////////////////////////// +// // +// Minimalistic 1-wire (onewire) master with Avalon MM bus interface // +// testbench // +// // +// Copyright (C) 2010 Iztok Jeras // +// // +////////////////////////////////////////////////////////////////////////////// +// // +// This RTL is free hardware: you can redistribute it and/or modify // +// it under the terms of the GNU Lesser General Public License // +// as published by the Free Software Foundation, either // +// version 3 of the License, or (at your option) any later version. // +// // +// This RTL is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +// // +////////////////////////////////////////////////////////////////////////////// + +`timescale 1ns / 1ps + +module onewire_tb; + +localparam DEBUG = 1'b0; + +// system clock parameters +localparam real FRQ = 6_000_000; // frequency 6MHz +localparam real TCP = (10.0**9)/FRQ; // time clock period in ns + +`ifdef CDR_E +localparam CDR_E = 1; +`else +localparam CDR_E = 0; +`endif + +`ifdef PRESET_50_10 +localparam OVD_E = 1'b1; // overdrive functionality enable +localparam BTP_N = "5.0"; // normal mode +localparam BTP_O = "1.0"; // overdrive mode +`elsif PRESET_60_05 +localparam OVD_E = 1'b1; // overdrive functionality enable +localparam BTP_N = "6.0"; // normal mode +localparam BTP_O = "0.5"; // overdrive mode +`elsif PRESET_75 +localparam OVD_E = 1'b0; // overdrive functionality enable +localparam BTP_N = "7.5"; // normal mode +localparam BTP_O = "1.0"; // overdrive mode +`else // default +localparam OVD_E = 1'b1; // overdrive functionality enable +localparam BTP_N = "5.0"; // normal mode +localparam BTP_O = "1.0"; // overdrive mode +`endif + +// port width parameters +`ifdef BDW_32 +localparam BDW = 32; // 32bit bus data width +`elsif BDW_8 +localparam BDW = 8; // 8bit bus data width +`else // default +localparam BDW = 32; // bus data width +`endif + +// number of wires +`ifdef OWN +localparam OWN = `OWN; // number of wires +`else +localparam OWN = 3; // slaves with different timing (min, typ, max) +`endif + +// computed bus address port width +localparam BAW = (BDW==32) ? 1 : 2; + +// clock dividers for normal and overdrive mode +// NOTE! must be round integer values +`ifdef PRESET_60_05 +// there is no way to cast a real value into an integer +localparam integer CDR_N = 45 - 1; +localparam integer CDR_O = 4 - 1; +`else +localparam integer CDR_N = ((BTP_N == "5.0") ? 5.0 : 7.5 ) * FRQ / 1_000_000 - 1; +localparam integer CDR_O = ((BTP_O == "1.0") ? 1.0 : 0.67) * FRQ / 1_000_000 - 1; +`endif + +// Avalon MM parameters +localparam AAW = BAW; // address width +localparam ADW = BDW; // data width +localparam ABW = ADW/8; // byte enable width + +// system_signals +reg clk; // clock +reg rst; // reset (asynchronous) +// Avalon MM interface +reg avalon_read; +reg avalon_write; +reg [AAW-1:0] avalon_address; +reg [ABW-1:0] avalon_byteenable; +reg [ADW-1:0] avalon_writedata; +wire [ADW-1:0] avalon_readdata; +wire avalon_waitrequest; +wire avalon_interrupt; + +// Avalon MM local signals +wire avalon_transfer; +reg [BDW-1:0] data; + +// onewire +wire [OWN-1:0] owr; // bidirectional +wire [OWN-1:0] owr_p; // output power enable from master +wire [OWN-1:0] owr_e; // output pull down enable from master +wire [OWN-1:0] owr_i; // input into master + +// slave conviguration +reg slave_ena; // slave enable (connect/disconnect from wire) +reg [3:0] slave_sel; // 1-wire slave select +reg slave_ovd; // overdrive mode enable +reg slave_dat_r; // read data +wire [OWN-1:0] slave_dat_w; // write data + +// error checking +integer error; +integer n; + +// overdrive enable loop +integer i; + +////////////////////////////////////////////////////////////////////////////// +// configuration printout and waveforms +////////////////////////////////////////////////////////////////////////////// + +// request for a dumpfile +initial begin + $dumpfile("onewire.vcd"); + $dumpvars(0, onewire_tb); +end + +// print configuration +initial begin + $display ("NOTE: Ports : BDW=%0d, BAW=%0d, OWN=%0d", BDW, BAW, OWN); + $display ("NOTE: Clock : FRQ=%3.2fMHz, TCP=%3.2fns", FRQ/1_000_000.0, TCP); + $display ("NOTE: Divide: CDR_E=%0b, CDR_N=%0d, CDR_O=%0d", CDR_E, CDR_N, CDR_O); + $display ("NOTE: Config: OVD_E=%0b, BTP_N=%1.2fus, BTP_O=%1.2fus", + OVD_E, (CDR_N+1)*1_000_000/FRQ, (CDR_O+1)*1_000_000/FRQ); +end + +////////////////////////////////////////////////////////////////////////////// +// clock and reset +////////////////////////////////////////////////////////////////////////////// + +// clock generation +initial clk = 1'b1; +always #(TCP/2) clk = ~clk; + +// reset generation +initial begin + rst = 1'b1; + repeat (2) @(posedge clk); + rst = 1'b0; +end + +////////////////////////////////////////////////////////////////////////////// +// Avalon write and read transfers +////////////////////////////////////////////////////////////////////////////// + +initial begin + // reset error counter + error = 0; + + // Avalon MM interface is idle + avalon_read = 1'b0; + avalon_write = 1'b0; + + // long delay to skip presence pulse + slave_ena = 1'b0; + #1000_000; + + // set clock divider ratios + if (CDR_E) begin + if (BDW==32) begin + avalon_cycle (1, 1, 4'hf, { 16'h0001, 16'h0001}, data); + avalon_cycle (1, 1, 4'hf, {CDR_O[15:0], CDR_N[15:0]}, data); + end else if (BDW==8) begin + avalon_cycle (1, 2, 1'b1, 8'h01, data); + avalon_cycle (1, 3, 1'b1, 8'h01, data); + avalon_cycle (1, 2, 1'b1, CDR_N[7:0], data); + avalon_cycle (1, 3, 1'b1, CDR_O[7:0], data); + end + end + + // test with slaves with different timing (each slave one one of the wires) + for (slave_sel=0; slave_sel1) begin + $display("ERROR: (t=%0t) Non ideal idle cycle time, should be around zero.", $time); + end + + // generate a delay pulse and break it with an idle pulse, before it finishes + repeat (10) @(posedge clk); + avalon_request (16'd0, 4'h0, 3'b011); + repeat (10) @(posedge clk); + avalon_request (16'd0, 4'h0, 3'b111); + + // wait a few cycles and finish + repeat (10) @(posedge clk); + $finish(); +end + +// avalon request cycle +task avalon_request ( + input [15:0] pwr, // power enable + input [3:0] sel, // onewire slave select + input [2:0] cmd // command {ovd, rst, dat} +); + reg [BDW-1:0] data; // read data +begin + if (BDW==32) begin + avalon_cycle (1, 0, 4'hf, {pwr<. // +// // +////////////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////////////////////////////// +// // +// The clock divider parameter is computed with the next formula: // +// // +// CDR_N = f_CLK * BTP_N - 1 (example: CDR_N = 1MHz * 5.0us - 1 = 5-1) // +// CDR_O = f_CLK * BTP_O - 1 (example: CDR_O = 1MHz * 1.0us - 1 = 1-1) // +// // +// If the dividing factor is not a round integer, than the timing of the // +// controller will be slightly off, and would support only a subset of // +// 1-wire devices with timing closer to the typical 30us slot. // +// // +// Base time periods BTP_N = "5.0" and BTP_O = "1.0" are optimized for // +// onewire timing. The default timing restricts the range of available // +// frequences to multiples of 1MHz. // +// // +// If even this restrictions are too strict use timing BTP_N = "6.0" and // +// BTP_O = "0.5", where the actual periods can be in the range: // +// 6.0us <= BTP_N <= 7.5us // +// 0.5us <= BTP_O <= 0.66us // +// // +// A third timing option is available for normal mode BTP_N = "7.5", this // +// option is optimized for logic size. // +// // +////////////////////////////////////////////////////////////////////////////// + +module sockit_owm #( + // enable implementation of optional functionality + parameter OVD_E = 1, // overdrive functionality is implemented by default + parameter CDR_E = 1, // clock divider register is implemented by default + // interface parameters + parameter BDW = 32, // bus data width + parameter OWN = 1, // number of 1-wire ports + // computed bus address port width +`ifdef __ICARUS__ + parameter BAW = (BDW==32) ? 1 : 2, +`else + parameter BAW = 1, // TODO, the above is correct, but does not work well with Altera SOPC Builder +`endif + // base time period + parameter BTP_N = "5.0", // normal mode (5.0us, options are "7.5", "5.0" and "6.0") + parameter BTP_O = "1.0", // overdrive mode (1.0us, options are "1.0", and "0.5") + // normal mode timing + parameter T_RSTH_N = (BTP_N == "7.5") ? 64 : (BTP_N == "5.0") ? 96 : 80, // reset high + parameter T_RSTL_N = (BTP_N == "7.5") ? 64 : (BTP_N == "5.0") ? 96 : 80, // reset low + parameter T_RSTP_N = (BTP_N == "7.5") ? 10 : (BTP_N == "5.0") ? 15 : 10, // reset presence pulse + parameter T_DAT0_N = (BTP_N == "7.5") ? 8 : (BTP_N == "5.0") ? 12 : 10, // bit 0 low + parameter T_DAT1_N = (BTP_N == "7.5") ? 1 : (BTP_N == "5.0") ? 1 : 1, // bit 1 low + parameter T_BITS_N = (BTP_N == "7.5") ? 2 : (BTP_N == "5.0") ? 3 : 2, // bit sample + parameter T_RCVR_N = (BTP_N == "7.5") ? 1 : (BTP_N == "5.0") ? 1 : 1, // recovery + parameter T_IDLE_N = (BTP_N == "7.5") ? 128 : (BTP_N == "5.0") ? 200 : 160, // idle timer + // overdrive mode timing + parameter T_RSTH_O = (BTP_O == "1.0") ? 48 : 96, // reset high + parameter T_RSTL_O = (BTP_O == "1.0") ? 48 : 96, // reset low + parameter T_RSTP_O = (BTP_O == "1.0") ? 10 : 15, // reset presence pulse + parameter T_DAT0_O = (BTP_O == "1.0") ? 6 : 12, // bit 0 low + parameter T_DAT1_O = (BTP_O == "1.0") ? 1 : 2, // bit 1 low + parameter T_BITS_O = (BTP_O == "1.0") ? 2 : 3, // bit sample + parameter T_RCVR_O = (BTP_O == "1.0") ? 2 : 4, // recovery + parameter T_IDLE_O = (BTP_O == "1.0") ? 96 : 192, // idle timer + // clock divider ratios (defaults are for a 2MHz clock) + parameter CDR_N = 5-1, // normal mode + parameter CDR_O = 1-1 // overdrive mode +)( + // system signals + input clk, + input rst, + // CPU bus interface + input bus_ren, // read enable + input bus_wen, // write enable + input [BAW-1:0] bus_adr, // address + input [BDW-1:0] bus_wdt, // write data + output [BDW-1:0] bus_rdt, // read data + output bus_irq, // interrupt request + // 1-wire interface + output [OWN-1:0] owr_p, // output power enable + output [OWN-1:0] owr_e, // output pull down enable + input [OWN-1:0] owr_i // input from bidirectional wire +); + +////////////////////////////////////////////////////////////////////////////// +// local parameters +////////////////////////////////////////////////////////////////////////////// + +// size of combined power and select registers +localparam PDW = (BDW==32) ? 24 : 8; + +// size of boudrate generator counter (divider for normal mode is largest) +localparam CDW = CDR_E ? ((BDW==32) ? 16 : 8) : $clog2(CDR_N); + +// size of port select signal +localparam SDW = $clog2(OWN); + +// size of cycle timing counter +localparam TDW = (T_RSTH_O+T_RSTL_O) > (T_RSTH_N+T_RSTL_N) + ? $clog2(T_RSTH_O+T_RSTL_O) : $clog2(T_RSTH_N+T_RSTL_N); + +////////////////////////////////////////////////////////////////////////////// +// local signals +////////////////////////////////////////////////////////////////////////////// + +// address dependent write enable +wire bus_ren_ctl_sts; +wire bus_wen_ctl_sts; +wire bus_wen_pwr_sel; +wire bus_wen_cdr_n; +wire bus_wen_cdr_o; + +// read data bus segments +wire [7:0] bus_rdt_ctl_sts; +wire [PDW-1:0] bus_rdt_pwr_sel; + +// clock divider +reg [CDW-1:0] div; +reg [CDW-1:0] cdr_n; +reg [CDW-1:0] cdr_o; +wire pls; + +// cycle control and status +reg owr_cyc; // cycle status +reg [TDW-1:0] cnt; // cycle counter + +// port select +//generate if (OWN>1) begin : sel_declaration +reg [SDW-1:0] owr_sel; +//end endgenerate + +// modified input data for overdrive +wire req_ovd; + +// onewire signals +reg [OWN-1:0] owr_pwr; // power +reg owr_ovd; // overdrive +reg owr_rst; // reset +reg owr_dat; // data bit +reg owr_smp; // sample bit + +reg owr_oen; // output enable +wire owr_iln; // input line + +// interrupt signals +reg irq_ena; // interrupt enable +reg irq_sts; // interrupt status + +// timing signals +wire [TDW-1:0] t_idl ; // idle cycle time +wire [TDW-1:0] t_rst ; // reset cycle time +wire [TDW-1:0] t_bit ; // data bit cycle time +wire [TDW-1:0] t_rstp; // reset presence pulse sampling time +wire [TDW-1:0] t_rsth; // reset release time +wire [TDW-1:0] t_dat0; // data bit 0 release time +wire [TDW-1:0] t_dat1; // data bit 1 release time +wire [TDW-1:0] t_bits; // data bit sampling time +wire [TDW-1:0] t_zero; // end of cycle time + +////////////////////////////////////////////////////////////////////////////// +// cycle timing +////////////////////////////////////////////////////////////////////////////// + +// idle time +assign t_idl = req_ovd ? T_IDLE_O : T_IDLE_N ; +// reset cycle time (reset low + reset hight) +assign t_rst = req_ovd ? T_RSTL_O + T_RSTH_O : T_RSTL_N + T_RSTH_N ; +// data bit cycle time (write 0 + recovery) +assign t_bit = req_ovd ? T_DAT0_O + + T_RCVR_O : T_DAT0_N + T_RCVR_N; + +// reset presence pulse sampling time (reset high - reset presence) +assign t_rstp = owr_ovd ? T_RSTH_O - T_RSTP_O : T_RSTH_N - T_RSTP_N ; +// reset release time (reset high) +assign t_rsth = owr_ovd ? T_RSTH_O : T_RSTH_N ; + +// data bit 0 release time (write bit 0 - write bit 0 + recovery) +assign t_dat0 = owr_ovd ? T_DAT0_O - T_DAT0_O + T_RCVR_O : T_DAT0_N - T_DAT0_N + T_RCVR_N; +// data bit 1 release time (write bit 0 - write bit 1 + recovery) +assign t_dat1 = owr_ovd ? T_DAT0_O - T_DAT1_O + T_RCVR_O : T_DAT0_N - T_DAT1_N + T_RCVR_N; +// data bit sampling time (write bit 0 - write bit 1 + recovery) +assign t_bits = owr_ovd ? T_DAT0_O - T_BITS_O + T_RCVR_O : T_DAT0_N - T_BITS_N + T_RCVR_N; + +// end of cycle time +assign t_zero = 'd0; + +////////////////////////////////////////////////////////////////////////////// +// bus read +////////////////////////////////////////////////////////////////////////////// + +// bus segnemt - controll/status register +assign bus_rdt_ctl_sts = {irq_ena, irq_sts, 1'b0, owr_pwr[0], owr_cyc, owr_ovd, owr_rst, owr_dat}; + +// bus segnemt - power and select register +generate + if (BDW==32) begin + if (OWN>1) begin + assign bus_rdt_pwr_sel = {{16-OWN{1'b0}}, owr_pwr, 4'h0, {4-SDW{1'b0}}, owr_sel}; + end else begin + assign bus_rdt_pwr_sel = 24'h0000_00; + end + end else if (BDW==8) begin + if (OWN>1) begin + assign bus_rdt_pwr_sel = {{ 4-OWN{1'b0}}, owr_pwr, {4-SDW{1'b0}}, owr_sel}; + end else begin + assign bus_rdt_pwr_sel = 8'hxx; + end + end +endgenerate + +// bus read data +generate if (BDW==32) begin + assign bus_rdt = (bus_adr[0]==1'b0) ? {bus_rdt_pwr_sel, bus_rdt_ctl_sts} : (cdr_o << 16 | cdr_n); +end else if (BDW==8) begin + assign bus_rdt = (bus_adr[1]==1'b0) ? ((bus_adr[0]==1'b0) ? bus_rdt_ctl_sts + : bus_rdt_pwr_sel) + : ((bus_adr[0]==1'b0) ? cdr_n + : cdr_o ); +end endgenerate + +////////////////////////////////////////////////////////////////////////////// +// bus write +////////////////////////////////////////////////////////////////////////////// + +// combined write/read enable and address decoder +generate if (BDW==32) begin + assign bus_ren_ctl_sts = bus_ren & bus_adr[0] == 1'b0; + assign bus_wen_ctl_sts = bus_wen & bus_adr[0] == 1'b0; + assign bus_wen_pwr_sel = bus_wen & bus_adr[0] == 1'b0; + assign bus_wen_cdr_n = bus_wen & bus_adr[0] == 1'b1; + assign bus_wen_cdr_o = bus_wen & bus_adr[0] == 1'b1; +end else if (BDW==8) begin + assign bus_ren_ctl_sts = bus_ren & bus_adr[1:0] == 2'b00; + assign bus_wen_ctl_sts = bus_wen & bus_adr[1:0] == 2'b00; + assign bus_wen_pwr_sel = bus_wen & bus_adr[1:0] == 2'b01; + assign bus_wen_cdr_n = bus_wen & bus_adr[1:0] == 2'b10; + assign bus_wen_cdr_o = bus_wen & bus_adr[1:0] == 2'b11; +end endgenerate + +////////////////////////////////////////////////////////////////////////////// +// clock divider +////////////////////////////////////////////////////////////////////////////// + +// clock divider ratio registers +generate + if (CDR_E) begin + if (BDW==32) begin + always @ (posedge clk, posedge rst) + if (rst) begin + cdr_n <= CDR_N; + cdr_o <= CDR_O; + end else begin + if (bus_wen_cdr_n) cdr_n <= bus_wdt[15: 0]; + if (bus_wen_cdr_o) cdr_o <= bus_wdt[31:16]; + end + end else if (BDW==8) begin + always @ (posedge clk, posedge rst) + if (rst) begin + cdr_n <= CDR_N; + cdr_o <= CDR_O; + end else begin + if (bus_wen_cdr_n) cdr_n <= bus_wdt; + if (bus_wen_cdr_o) cdr_o <= bus_wdt; + end + end + end else begin + initial begin + cdr_n = CDR_N; + cdr_o = CDR_O; + end + end +endgenerate + +// clock divider +always @ (posedge clk, posedge rst) +if (rst) div <= 'd0; +else begin + if (bus_wen) div <= 'd0; + else div <= pls ? 'd0 : div + owr_cyc; +end + +// divided clock pulse +assign pls = (div == (owr_ovd ? cdr_o : cdr_n)); + +////////////////////////////////////////////////////////////////////////////// +// power and select register +////////////////////////////////////////////////////////////////////////////// + +// select and power register implementation +generate if (OWN>1) begin : sel_implementation + // port select + always @ (posedge clk, posedge rst) + if (rst) owr_sel <= {SDW{1'b0}}; + else if (bus_wen_pwr_sel) owr_sel <= bus_wdt[(BDW==32 ? 8 : 0)+:SDW]; + + // power delivery + always @ (posedge clk, posedge rst) + if (rst) owr_pwr <= {OWN{1'b0}}; + else if (bus_wen_pwr_sel) owr_pwr <= bus_wdt[(BDW==32 ? 16 : 4)+:OWN]; +end else begin + // port select + initial owr_sel <= 'd0; + // power delivery + always @ (posedge clk, posedge rst) + if (rst) owr_pwr <= 1'b0; + else if (bus_wen_ctl_sts) owr_pwr <= bus_wdt[4]; +end endgenerate + +////////////////////////////////////////////////////////////////////////////// +// interrupt logic +////////////////////////////////////////////////////////////////////////////// + +// bus interrupt +assign bus_irq = irq_ena & irq_sts; + +// interrupt enable +always @ (posedge clk, posedge rst) +if (rst) irq_ena <= 1'b0; +else if (bus_wen_ctl_sts) irq_ena <= bus_wdt[7]; + +// transmit status (active after onewire cycle ends) +always @ (posedge clk, posedge rst) +if (rst) irq_sts <= 1'b0; +else begin + if (bus_wen_ctl_sts) irq_sts <= 1'b0; + else if (pls & (cnt == t_zero)) irq_sts <= 1'b1; + else if (bus_ren_ctl_sts) irq_sts <= 1'b0; +end + +////////////////////////////////////////////////////////////////////////////// +// onewire state machine +////////////////////////////////////////////////////////////////////////////// + +assign req_ovd = OVD_E ? bus_wen_ctl_sts & bus_wdt[2] : 1'b0; + +// overdrive +always @ (posedge clk, posedge rst) +if (rst) owr_ovd <= 1'b0; +else if (bus_wen_ctl_sts) owr_ovd <= req_ovd; + +// reset +always @ (posedge clk, posedge rst) +if (rst) owr_rst <= 1'b0; +else if (bus_wen_ctl_sts) owr_rst <= bus_wdt[1]; + +// transmit data, reset, overdrive +always @ (posedge clk, posedge rst) +if (rst) owr_dat <= 1'b0; +else begin + if (bus_wen_ctl_sts) owr_dat <= bus_wdt[0]; + else if (pls & (cnt == t_zero)) owr_dat <= owr_smp; +end + +// onewire cycle status +always @ (posedge clk, posedge rst) +if (rst) owr_cyc <= 1'b0; +else begin + if (bus_wen_ctl_sts) owr_cyc <= bus_wdt[3] & ~&bus_wdt[2:0]; + else if (pls & (cnt == t_zero)) owr_cyc <= 1'b0; +end + +// state counter (initial value depends whether the cycle is reset or data) +always @ (posedge clk, posedge rst) +if (rst) cnt <= 0; +else begin + if (bus_wen_ctl_sts) cnt <= (&bus_wdt[1:0] ? t_idl : bus_wdt[1] ? t_rst : t_bit) - 'd1; + else if (pls) cnt <= cnt - 'd1; +end + +// receive data (sampling point depends whether the cycle is reset or data) +always @ (posedge clk) +if (pls) begin + if ( owr_rst & (cnt == t_rstp)) owr_smp <= owr_iln; // presence detect + else if (~owr_rst & (cnt == t_bits)) owr_smp <= owr_iln; // read data bit +end + +// output register (switch point depends whether the cycle is reset or data) +always @ (posedge clk, posedge rst) +if (rst) owr_oen <= 1'b0; +else begin + if (bus_wen_ctl_sts) owr_oen <= ~&bus_wdt[1:0]; + else if (pls) begin + if (owr_rst & (cnt == t_rsth)) owr_oen <= 1'b0; // reset + else if (owr_dat & (cnt == t_dat1)) owr_oen <= 1'b0; // write 1, read + else if ( (cnt == t_dat0)) owr_oen <= 1'b0; // write 0 + end +end + +////////////////////////////////////////////////////////////////////////////// +// IO +////////////////////////////////////////////////////////////////////////////// + +// only one 1-wire line cn be accessed at the same time +assign owr_e = owr_oen << owr_sel; +// all 1-wire lines can be powered independently +assign owr_p = owr_pwr; + +// 1-wire line status read multiplexer +assign owr_iln = owr_i [owr_sel]; + +endmodule Index: trunk/hdl/onewire_slave_model.v =================================================================== --- trunk/hdl/onewire_slave_model.v (nonexistent) +++ trunk/hdl/onewire_slave_model.v (revision 3) @@ -0,0 +1,115 @@ +////////////////////////////////////////////////////////////////////////////// +// // +// 1-wire (owr) slave model // +// // +// Copyright (C) 2010 Iztok Jeras // +// // +////////////////////////////////////////////////////////////////////////////// +// // +// This RTL is free hardware: you can redistribute it and/or modify // +// it under the terms of the GNU Lesser General Public License // +// as published by the Free Software Foundation, either // +// version 3 of the License, or (at your option) any later version. // +// // +// This RTL is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +// // +////////////////////////////////////////////////////////////////////////////// + +`timescale 1us / 1ns + +module onewire_slave_model #( + // time slot (min=15.0, typ=30.0, max=60.0) + parameter TS = 30.0 +)( + // configuration + input wire ena, // response enable + input wire ovd, // overdrive mode select + input wire dat_r, // read data + output wire dat_w, // write data + // 1-wire + inout wire owr +); + +// IO +reg pul; +reg dat; + +// events +event sample_dat; +event sample_rst; + +////////////////////////////////////////////////////////////////////////////// +// IO +////////////////////////////////////////////////////////////////////////////// + +// onewire open collector signal +assign owr = pul & ena ? 1'b0 : 1'bz; + +// read data output +assign dat_w = ena ? dat : 1'bz; + +////////////////////////////////////////////////////////////////////////////// +// events inside a cycle +////////////////////////////////////////////////////////////////////////////// + +// power up state +initial pul <= 1'b0; + +always @ (negedge owr) if (ena) transfer (ovd, dat_r, dat); + +task automatic transfer ( + input ovd, + input dat_r, + output dat_w +); begin + // provide read data response + pul = ~dat_r; + // wait 1 time slot + if (ovd) #(1*TS/8); + else #(1*TS); + // write data is sampled here + -> sample_dat; + dat_w = owr; + // release the wire + pul = 1'b0; + // fork into data or reset cycle + fork + // transfer data + begin : transfer_dat + // if cycle ends before reset is detected + if (~owr) @ (posedge owr); + // disable reset path + disable transfer_rst; + end + // transfer reset + begin : transfer_rst + // wait 7 time slots + if (ovd) #(7*TS/8); + else #(7*TS); + // reset is sampled here + -> sample_rst; + // if reset is detected disable data path + if (~owr) disable transfer_dat; + // wait for reset low to end + @ (posedge owr) + // wait 1 time slot + if (ovd) #(1*TS/8); + else #(1*TS); + // provide presence pulse + pul = 1'b1; + // wait 4 time slot + if (ovd) #(4*TS/8); + else #(4*TS); + // release the wire + pul = 1'b0; + end + join +end endtask + +endmodule Index: trunk/hdl/wishbone2bus.v =================================================================== --- trunk/hdl/wishbone2bus.v (nonexistent) +++ trunk/hdl/wishbone2bus.v (revision 3) @@ -0,0 +1,43 @@ +module wishbone2bus #( + parameter AW = 2, // address width + parameter DW = 32, // data width + parameter SW = DW/8 // select width +)( + // Wishbone master port + input wire wb_cyc, // cycle + input wire wb_stb, // strobe + input wire wb_we, // write enable + input wire [AW-1:0] wb_adr, // address + input wire [SW-1:0] wb_sel, // byte select + input wire [DW-1:0] wb_dat_w, // write data + output wire [DW-1:0] wb_dat_r, // read data + output wire wb_ack, // acknowledge + output wire wb_err, // error + output wire wb_rty, // retry + // Avalon slave port + output wire bus_wen, // write enable + output wire bus_ren, // read enable + output wire [AW-1:0] bus_adr, // address + output wire [DW-1:0] bus_wdt, // write data + input wire [DW-1:0] bus_rdt // read data +); + +// bus write and read enable +assign bus_wen = wb_cyc & wb_stb & wb_we; +assign bus_ren = wb_cyc & wb_stb & ~wb_we; + +// address +assign bus_adr = wb_adr; + +// write data +assign bus_wdt = wb_dat_w; + +// read data +assign wb_dat_r = bus_rdt; + +// error if not full width access else acknowledge +assign wb_ack = &wb_sel; +assign wb_err = ~&wb_sel; +assign wb_rty = 1'b0; + +endmodule Index: trunk/lic/license_pub.txt =================================================================== --- trunk/lic/license_pub.txt (nonexistent) +++ trunk/lic/license_pub.txt (revision 3) @@ -0,0 +1,24 @@ +Copyright (C) 1998 Dallas Semiconductor Corporation, All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Dallas Semiconductor +shall not be used except as stated in the Dallas Semiconductor +Branding Policy. + Index: trunk/lic/lgpl.txt =================================================================== --- trunk/lic/lgpl.txt (nonexistent) +++ trunk/lic/lgpl.txt (revision 3) @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. Index: trunk/sockit_owm_sw.tcl =================================================================== --- trunk/sockit_owm_sw.tcl (revision 2) +++ trunk/sockit_owm_sw.tcl (revision 3) @@ -1,6 +1,25 @@ -# -# sockit_owm_sw.tcl -# +############################################################################### +# # +# Minimalistic 1-wire (onewire) master with Avalon MM bus interface # +# # +# Copyright (C) 2010 Iztok Jeras # +# # +############################################################################### +# # +# This script is free software: you can redistribute it and/or modify # +# it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either # +# version 3 of the License, or (at your option) any later version. # +# # +# This RTL is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### # Create a new driver create_driver sockit_owm_driver @@ -9,16 +28,12 @@ set_sw_property hw_class_name sockit_owm # Driver version -set_sw_property version 1.1 +set_sw_property version 1.3 -# This driver is proclaimed to be compatible with sockit_owm hardware -# as old as version "1.0". If the hardware component version number is not -# equal or greater than the min_compatable_hw_version number, the driver -# source files will not be copied over to the BSP drivers subdirectory -set_sw_property min_compatible_hw_version 1.1 +# This driver is compatible with version 1.3 and above +set_sw_property min_compatible_hw_version 1.3 -# Interrupt properties: This driver supports both legacy and enhanced -# interrupt APIs, as well as ISR preemption. +# Interrupt properties set_sw_property isr_preemption_supported true set_sw_property supported_interrupt_apis "legacy_interrupt_api enhanced_interrupt_api" @@ -28,37 +43,41 @@ # Location in generated BSP that above sources will be copied into set_sw_property bsp_subdirectory drivers -# -# Source file listings... -# +# C source files +add_sw_property c_source HAL/src/sockit_owm.c +add_sw_property c_source HAL/src/ownet.c +add_sw_property c_source HAL/src/owtran.c +add_sw_property c_source HAL/src/owlnk.c +add_sw_property c_source HAL/src/owses.c -# C/C++ source files -add_sw_property c_source HAL/src/ownet.c -add_sw_property c_source HAL/src/owtran.c -add_sw_property c_source HAL/src/owlnk.c -add_sw_property c_source HAL/src/owses.c -add_sw_property c_source HAL/src/owerr.c -add_sw_property c_source HAL/src/crcutil.c -add_sw_property c_source HAL/src/sockit_owm.c - # Include files +add_sw_property include_source inc/sockit_owm_regs.h +add_sw_property include_source HAL/inc/sockit_owm.h add_sw_property include_source HAL/inc/ownet.h -add_sw_property include_source HAL/inc/sockit_owm.h -add_sw_property include_source inc/sockit_owm_regs.h # Common files +add_sw_property c_source HAL/src/owerr.c +add_sw_property c_source HAL/src/crcutil.c add_sw_property include_source HAL/inc/findtype.h add_sw_property c_source HAL/src/findtype.c +# device files (thermometer) +add_sw_property include_source HAL/inc/temp10.h +add_sw_property c_source HAL/src/temp10.c +add_sw_property include_source HAL/inc/temp28.h +add_sw_property c_source HAL/src/temp28.c +add_sw_property include_source HAL/inc/temp42.h +add_sw_property c_source HAL/src/temp42.c + # This driver supports HAL & UCOSII BSP (OS) types add_sw_property supported_bsp_type HAL add_sw_property supported_bsp_type UCOSII # Driver configuration options -add_sw_setting boolean_define_only public_mk_define enable_polling_driver SOCKIT_OWM_POLLING false "Small-footprint (polled mode) driver" -add_sw_setting boolean_define_only public_mk_define enable_hardware_delay SOCKIT_OWM_HW_DLY false "Mili second delay implemented in hardware" +add_sw_setting boolean_define_only public_mk_define polling_driver_enable SOCKIT_OWM_POLLING false "Small-footprint (polled mode) driver" +add_sw_setting boolean_define_only public_mk_define hardware_delay_enable SOCKIT_OWM_HW_DLY true "Mili second delay implemented in hardware" +add_sw_setting boolean_define_only public_mk_define error_detection_enable SOCKIT_OWM_ERR_ENABLE true "Implement error detection support" +add_sw_setting boolean_define_only public_mk_define error_detection_small SOCKIT_OWM_ERR_SMALL true "Reduced memory consumption for error detection" # Enable application layer code #add_sw_setting boolean_define_only public_mk_define enable_A SOCKIT_OWM_A false "Enable driver A" - -# End of file
/trunk/sim/gtkwave.sav
0,0 → 1,60
[timestart] 0
[size] 1366 691
[pos] -1 -1
*-29.539524 1000162666 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] onewire_tb.
@28
onewire_tb.clk
onewire_tb.rst
@800200
-Avalon MM bus
@28
onewire_tb.avalon_write
onewire_tb.avalon_read
onewire_tb.avalon_interrupt
@1000200
-Avalon MM bus
@800200
-1-wire master
@200
-clock divider
@28
onewire_tb.onewire_master.pls
@200
-control/satus
@28
onewire_tb.onewire_master.owr_cyc
onewire_tb.onewire_master.owr_ovd
onewire_tb.onewire_master.owr_rst
onewire_tb.onewire_master.owr_dat
@200
-state machine
@c00201
-timing
@200
-reset timing
@22
onewire_tb.onewire_master.t_rst[7:0]
onewire_tb.onewire_master.t_rsth[7:0]
onewire_tb.onewire_master.t_rstp[7:0]
@200
-read/write timing
@22
onewire_tb.onewire_master.t_bit[7:0]
onewire_tb.onewire_master.t_dat1[7:0]
onewire_tb.onewire_master.t_bits[7:0]
onewire_tb.onewire_master.t_dat0[7:0]
@1401201
-timing
@200
-select & power
@28
onewire_tb.onewire_master.owr_sel[1:0]
@1000200
-1-wire master
@28
onewire_tb.owr_p
onewire_tb.owr_e
onewire_tb.owr_i
[pattern_trace] 1
[pattern_trace] 0
/trunk/sim/iverilog_gtkwave.cmd
0,0 → 1,14
REM cmd script for running the onewire example
 
:: cleanup first
erase onewire.out
erase onewire.vcd
 
:: compile the verilog sources (testbench and RTL)
iverilog -o onewire.out onewire_tb.v onewire_slave_model.v ..\sockit_owm\sockit_owm.v
 
:: run the simulation
vvp onewire.out
 
:: open the waveform and detach it
gtkwave onewire.vcd gtkwave.sav &
trunk/sim/iverilog_gtkwave.cmd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/readme.txt =================================================================== --- trunk/sim/readme.txt (nonexistent) +++ trunk/sim/readme.txt (revision 3) @@ -0,0 +1,15 @@ +Instructions for running the testbench + +Files: +- sim/gtkwave.sav (GTKWave waveform save file) +- sim/iverilog_gtkwave.scr (Bash script) +- sim/iverilog_gtkwave.cmd (Windows cmd script) + +Requirements: +- Icarus Verilog simulator +- GTKWave waveform viewer (not essential) + +Procedure: +1. First CD into the sim/ directory. +2. modify the test parameters in the script (the loop can be commented out) +3. run the script ./iverilog_gtkwave.scr Index: trunk/sim/iverilog_gtkwave.scr =================================================================== --- trunk/sim/iverilog_gtkwave.scr (nonexistent) +++ trunk/sim/iverilog_gtkwave.scr (revision 3) @@ -0,0 +1,32 @@ +#!/bin/bash + +# cleanup first +rm onewire.out +rm onewire.vcd + +# list of source files +sources="../hdl/onewire_tb.v ../hdl/onewire_slave_model.v ../hdl/sockit_owm.v" + +# compile verilog sources (testbench and RTL) and run simulation + +# data bus widths +for buswdth in "BDW_32" "BDW_8" +do + # clock divider implementation + for divider in "CDR_NONE" "CDR_E" + do + # timing options + for preset in "PRESET_50_10" "PRESET_60_05" "PRESET_75" + do + iverilog -o onewire.out $sources -D$preset -D$divider -D$buswdth + vvp onewire.out -none + done + done +done + +# test a single 1-wire line configuration (waveform generation is enabled) +iverilog -o onewire.out $sources -DPRESET_50_10 -DCDR_NONE -DBDW_32 -DOWN=1 +vvp onewire.out + +# open the waveform and detach it +gtkwave onewire.vcd gtkwave.sav &
trunk/sim/iverilog_gtkwave.scr Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/inc/sockit_owm_regs.h =================================================================== --- trunk/inc/sockit_owm_regs.h (revision 2) +++ trunk/inc/sockit_owm_regs.h (revision 3) @@ -27,38 +27,55 @@ #include -#define SOCKIT_OWM_REG 0 -#define IOADDR_SOCKIT_OWM(base) __IO_CALC_ADDRESS_NATIVE(base, SOCKIT_OWM_REG) -#define IORD_SOCKIT_OWM(base) IORD(base, SOCKIT_OWM_REG) -#define IOWR_SOCKIT_OWM(base, data) IOWR(base, SOCKIT_OWM_REG, data) +////////////////////////////////////////////////////////////////////////////// +// control status register // +////////////////////////////////////////////////////////////////////////////// -#define SOCKIT_OWM_DAT_MSK (0x01) // data bit -#define SOCKIT_OWM_DAT_OFST (0) -#define SOCKIT_OWM_RST_MSK (0x02) // reset (write only) -#define SOCKIT_OWM_RST_OFST (1) -#define SOCKIT_OWM_TRN_MSK (0x02) // transfer (read only) -#define SOCKIT_OWM_TRN_OFST (1) -#define SOCKIT_OWM_OVD_MSK (0x04) // overdrive -#define SOCKIT_OWM_OVD_OFST (2) -#define SOCKIT_OWM_PWR_MSK (0x08) // power (strong pull-up) -#define SOCKIT_OWM_PWR_OFST (3) // if there is a single port -#define SOCKIT_OWM_STX_MSK (0x10) // status TX -#define SOCKIT_OWM_STX_OFST (4) -#define SOCKIT_OWM_SRX_MSK (0x20) // status RX -#define SOCKIT_OWM_SRX_OFST (5) -#define SOCKIT_OWM_ETX_MSK (0x40) // irq enable TX -#define SOCKIT_OWM_ETX_OFST (6) -#define SOCKIT_OWM_ERX_MSK (0x80) // irq enable RX -#define SOCKIT_OWM_ERX_OFST (7) +#define SOCKIT_OWM_CTL_REG 0 +#define IOADDR_SOCKIT_OWM_CTL(base) IO_CALC_ADDRESS_NATIVE(base, SOCKIT_OWM_CTL_REG) +#define IORD_SOCKIT_OWM_CTL(base) IORD(base, SOCKIT_OWM_CTL_REG) +#define IOWR_SOCKIT_OWM_CTL(base, data) IOWR(base, SOCKIT_OWM_CTL_REG, data) -#define SOCKIT_OWM_SEL_MSK (0x0f00) // port select number -#define SOCKIT_OWM_SEL_OFST (8) +#define SOCKIT_OWM_CTL_DAT_MSK (0x00000001) // data bit +#define SOCKIT_OWM_CTL_DAT_OFST (0) +#define SOCKIT_OWM_CTL_RST_MSK (0x00000002) // reset +#define SOCKIT_OWM_CTL_RST_OFST (1) +#define SOCKIT_OWM_CTL_OVD_MSK (0x00000004) // overdrive +#define SOCKIT_OWM_CTL_OVD_OFST (2) +#define SOCKIT_OWM_CTL_CYC_MSK (0x00000008) // cycle +#define SOCKIT_OWM_CTL_CYC_OFST (3) +#define SOCKIT_OWM_CTL_PWR_MSK (0x00000010) // power (strong pull-up), if there is a single 1-wire line +#define SOCKIT_OWM_CTL_PWR_OFST (5) +#define SOCKIT_OWM_CTL_RSV_MSK (0x00000020) // reserved +#define SOCKIT_OWM_CTL_RSV_OFST (5) +#define SOCKIT_OWM_CTL_IRQ_MSK (0x00000040) // irq status +#define SOCKIT_OWM_CTL_IRQ_OFST (6) +#define SOCKIT_OWM_CTL_IEN_MSK (0x00000080) // irq enable +#define SOCKIT_OWM_CTL_IEN_OFST (7) -#define SOCKIT_OWM_POWER_MSK (0xffff0000) // power (strong pull-up) -#define SOCKIT_OWM_POWER_OFST (16) // if there is more than one port +#define SOCKIT_OWM_CTL_SEL_MSK (0x00000f00) // port select number +#define SOCKIT_OWM_CTL_SEL_OFST (8) +#define SOCKIT_OWM_CTL_POWER_MSK (0xffff0000) // power (strong pull-up), if there is more than one 1-wire line +#define SOCKIT_OWM_CTL_POWER_OFST (16) + // two common commands -#define SOCKIT_OWM_DLY_MSK ( SOCKIT_OWM_RST_MSK | SOCKIT_OWM_DAT_MSK) -#define SOCKIT_OWM_IDL_MSK (SOCKIT_OWM_OVD_MSK | SOCKIT_OWM_RST_MSK | SOCKIT_OWM_DAT_MSK) +#define SOCKIT_OWM_CTL_DLY_MSK ( SOCKIT_OWM_CTL_RST_MSK | SOCKIT_OWM_CTL_DAT_MSK) +#define SOCKIT_OWM_CTL_IDL_MSK (SOCKIT_OWM_CTL_OVD_MSK | SOCKIT_OWM_CTL_RST_MSK | SOCKIT_OWM_CTL_DAT_MSK) +////////////////////////////////////////////////////////////////////////////// +// clock divider ratio register // +////////////////////////////////////////////////////////////////////////////// + +#define SOCKIT_OWM_CDR_REG 1 +#define IOADDR_SOCKIT_OWM_CDR(base) IO_CALC_ADDRESS_NATIVE(base, SOCKIT_OWM_CDR_REG) +#define IORD_SOCKIT_OWM_CDR(base) IORD(base, SOCKIT_OWM_CDR_REG) +#define IOWR_SOCKIT_OWM_CDR(base, data) IOWR(base, SOCKIT_OWM_CDR_REG, data) + +#define SOCKIT_OWM_CDR_N_MSK (0x0000ffff) // normal mode +#define SOCKIT_OWM_CDR_N_OFST (0) +#define SOCKIT_OWM_CDR_O_MSK (0xffff0000) // overdrive mode +#define SOCKIT_OWM_CDR_O_OFST (16) + + #endif /* __SOCKIT_OWM_REGS_H__ */
/trunk/README
10,8 → 10,7
- overdrive (untested)
- power supply (strong pull-up) (untested)
 
SOPC Builder integration:
- dividers are computed automaticaly from the system frequency
SOPC Builder integration
 
Nios II EDS integration:
- port of the 1-wire open domain kit version 3.10
/trunk/sockit_owm_hw.tcl
1,37 → 1,72
# sockit_owm
# Iztok Jeras 2010.06.13.18:29:39
# 1-wire (onewire) master
###############################################################################
# #
# Minimalistic 1-wire (onewire) master with Avalon MM bus interface #
# #
# Copyright (C) 2010 Iztok Jeras #
# #
###############################################################################
# #
# This script is free hardware: you can redistribute it and/or modify #
# it under the terms of the GNU Lesser General Public License #
# as published by the Free Software Foundation, either #
# version 3 of the License, or (at your option) any later version. #
# #
# This RTL is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http:#www.gnu.org/licenses/>. #
# #
###############################################################################
 
# request TCL package from ACDS 9.1
package require -exact sopc 9.1
# request TCL package from Altera tools version 10.0
package require -exact sopc 10.0
 
# module sockit_owm
set_module_property DESCRIPTION "1-wire (onewire) master"
set_module_property NAME sockit_owm
set_module_property VERSION 1.1
set_module_property INTERNAL false
set_module_property GROUP "Interface Protocols/Serial"
set_module_property AUTHOR "Iztok Jeras"
set_module_property DISPLAY_NAME "1-wire (onewire)"
set_module_property TOP_LEVEL_HDL_FILE sockit_owm.v
set_module_property TOP_LEVEL_HDL_MODULE sockit_owm
set_module_property NAME sockit_owm
set_module_property VERSION 1.3
set_module_property GROUP "Interface Protocols/Serial"
set_module_property DISPLAY_NAME "1-wire (onewire) master"
set_module_property DESCRIPTION "1-wire (onewire) master"
set_module_property AUTHOR "Iztok Jeras"
 
set_module_property TOP_LEVEL_HDL_FILE sockit_owm.v
set_module_property TOP_LEVEL_HDL_MODULE sockit_owm
set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
set_module_property EDITABLE true
set_module_property ANALYZE_HDL TRUE
set_module_property EDITABLE true
 
# callbacks
set_module_property VALIDATION_CALLBACK validation_callback
set_module_property ELABORATION_CALLBACK elaboration_callback
 
# TODO add_documentation_link
# documentation links and files
add_documentation_link WEBLINK https://github.com/jeras/sockit_owm
add_documentation_link WEBLINK http://opencores.org/project,sockit_owm
add_documentation_link DATASHEET doc/sockit_owm.pdf
 
# RTL files
add_file sockit_owm.v {SYNTHESIS SIMULATION}
add_file hdl/sockit_owm.v {SYNTHESIS SIMULATION}
 
# parameters
add_parameter OVD_E BOOLEAN
set_parameter_property OVD_E DESCRIPTION "Implementation of overdrive enable, disabling it can spare a small amount of logic."
set_parameter_property OVD_E DEFAULT_VALUE 1
set_parameter_property OVD_E UNITS None
set_parameter_property OVD_E AFFECTS_GENERATION false
set_parameter_property OVD_E HDL_PARAMETER true
 
add_parameter CDR_E BOOLEAN
set_parameter_property CDR_E DESCRIPTION "Implementation of clock divider ratio registers, disabling it can spare a small amount of logic."
set_parameter_property CDR_E DEFAULT_VALUE 0
set_parameter_property CDR_E UNITS None
set_parameter_property CDR_E AFFECTS_GENERATION false
set_parameter_property CDR_E HDL_PARAMETER true
 
add_parameter BDW INTEGER
set_parameter_property BDW DESCRIPTION "CPU interface data bus width"
#set_parameter_property BDW DISPLAY_NAME BDW
set_parameter_property BDW DISPLAY_HINT "radio"
set_parameter_property BDW VISIBLE false
set_parameter_property BDW DEFAULT_VALUE 32
set_parameter_property BDW ALLOWED_RANGES {8 32}
set_parameter_property BDW UNITS bits
39,18 → 74,19
set_parameter_property BDW AFFECTS_GENERATION false
set_parameter_property BDW HDL_PARAMETER true
 
add_parameter OVD_E BOOLEAN
set_parameter_property OVD_E DESCRIPTION "Implementation of overdrive enable, disabling it can spare a small amount of logic."
#set_parameter_property OVD_E DISPLAY_NAME OVD_E
set_parameter_property OVD_E DEFAULT_VALUE 1
set_parameter_property OVD_E UNITS None
set_parameter_property OVD_E AFFECTS_GENERATION false
set_parameter_property OVD_E HDL_PARAMETER true
add_parameter BAW INTEGER
set_parameter_property BAW DESCRIPTION "CPU interface address bus width"
set_parameter_property BAW VISIBLE false
set_parameter_property BAW DEFAULT_VALUE 1
set_parameter_property BAW ALLOWED_RANGES {1 2}
set_parameter_property BAW UNITS bits
set_parameter_property BAW ENABLED false
set_parameter_property BAW AFFECTS_GENERATION false
set_parameter_property BAW HDL_PARAMETER true
 
add_parameter OWN INTEGER
set_parameter_property OWN DESCRIPTION "Nummber of 1-wire channels"
#set_parameter_property OWN DISPLAY_NAME OWN
#set_parameter_property BTP_N DISPLAY_HINT "drop-down"
set_parameter_property OWN DEFAULT_VALUE 1
set_parameter_property OWN ALLOWED_RANGES {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16}
set_parameter_property OWN AFFECTS_GENERATION false
81,7 → 117,7
set_parameter_property F_CLK DESCRIPTION "System clock frequency"
set_parameter_property F_CLK UNITS megahertz
 
add_parameter CDR_N POSITIVE
add_parameter CDR_N NATURAL
set_parameter_property CDR_N DERIVED true
set_parameter_property CDR_N DESCRIPTION "Clock divider ratio for normal mode"
set_parameter_property CDR_N DISPLAY_NAME CDR_N
89,7 → 125,7
set_parameter_property CDR_N AFFECTS_GENERATION false
set_parameter_property CDR_N HDL_PARAMETER true
 
add_parameter CDR_O POSITIVE
add_parameter CDR_O NATURAL
set_parameter_property CDR_O DERIVED true
set_parameter_property CDR_O DESCRIPTION "Clock divider ratio for overdrive mode"
set_parameter_property CDR_O DISPLAY_NAME CDR_O
99,9 → 135,9
 
add_display_item "Base time period options" BTP_N parameter
add_display_item "Base time period options" BTP_O parameter
add_display_item "Clock dividers" F_CLK parameter
add_display_item "Clock dividers" CDR_N parameter
add_display_item "Clock dividers" CDR_O parameter
add_display_item "Clock dividers" F_CLK parameter
add_display_item "Clock dividers" CDR_N parameter
add_display_item "Clock dividers" CDR_O parameter
 
# connection point clock_reset
add_interface clock_reset clock end
108,7 → 144,7
 
set_interface_property clock_reset ENABLED true
 
add_interface_port clock_reset clk clk Input 1
add_interface_port clock_reset clk clk Input 1
add_interface_port clock_reset rst reset Input 1
 
# connection point s1
133,10 → 169,11
set_interface_property s1 ASSOCIATED_CLOCK clock_reset
set_interface_property s1 ENABLED true
 
add_interface_port s1 bus_read read Input 1
add_interface_port s1 bus_write write Input 1
add_interface_port s1 bus_writedata writedata Input BDW
add_interface_port s1 bus_readdata readdata Output BDW
add_interface_port s1 bus_ren read Input 1
add_interface_port s1 bus_wen write Input 1
add_interface_port s1 bus_adr address Input BAW
add_interface_port s1 bus_wdt writedata Input BDW
add_interface_port s1 bus_rdt readdata Output BDW
 
# connection point irq
add_interface irq interrupt end
146,7 → 183,7
set_interface_property irq ASSOCIATED_CLOCK clock_reset
set_interface_property irq ENABLED true
 
add_interface_port irq bus_interrupt irq Output 1
add_interface_port irq bus_irq irq Output 1
 
# connection point conduit
add_interface ext conduit end
153,20 → 190,20
 
set_interface_property ext ENABLED true
 
add_interface_port ext onewire_p export Output 1
add_interface_port ext onewire_e export Output 1
add_interface_port ext onewire_i export Input 1
add_interface_port ext owr_p export Output OWN
add_interface_port ext owr_e export Output OWN
add_interface_port ext owr_i export Input OWN
 
proc validation_callback {} {
# check if overdrive is enabled
set ovd [get_parameter_value OVD_E]
set ovd_e [get_parameter_value OVD_E]
# get clock frequency in Hz
set f [get_parameter_value F_CLK]
set f [get_parameter_value F_CLK]
# get base time periods
set btp_n [get_parameter_value BTP_N]
set btp_o [get_parameter_value BTP_O]
# disable editing od dividers
set_parameter_property BTP_O ENABLED [expr {$ovd ? "true" : "false"}]
# enable/disable editing of overdrive divider
set_parameter_property BTP_O ENABLED [expr {$ovd_e ? "true" : "false"}]
# compute normal mode divider
if {$btp_n=="5.0"} {
set d_n [expr {$f/200000}]
178,11 → 215,13
set e_n [expr {$t_n/7.5-1}]
} elseif {$btp_n=="6.0"} {
set d_n [expr {$f/133333}]
set t_n [expr {1000000.0/($f/$d_n)}]
if {(6.0<=$t_n) && ($t_n<=7.5)} {
set t_n [expr {$d_n*1000000.0/$f}]
if {$t_n>7.5} {
set e_n [expr {$t_n/7.5-1}]
} elseif {6.0>$t_n} {
set e_n [expr {$t_n/6.0-1}]
} else {
set e_n 0.0
} else {
set e_n [expr {$t_n/6.0-1}]
}
}
# compute overdrive mode divider
192,16 → 231,18
set e_o [expr {$t_o/1.0-1}]
} elseif {$btp_o=="0.5"} {
set d_o [expr {$f/1500000}]
set t_o [expr {1000000.0/($f/$d_o)}]
if {(0.5<=$t_o) && ($t_o<=(2.0/3))} {
set t_o [expr {$d_o*1000000.0/$f}]
if {$t_o>(2.0/3)} {
set e_o [expr {$t_o/(2.0/3)-1}]
} elseif {0.5>$t_o} {
set e_o [expr {$t_o/0.5-1}]
} else {
set e_o 0.0
} else {
set e_o [expr {$t_o/0.5-1}]
}
}
# set divider values
set_parameter_value CDR_N $d_n
if {$ovd} {set_parameter_value CDR_O $d_o}
set_parameter_value CDR_N [expr {$d_n-1}]
if {$ovd_e} {set_parameter_value CDR_O [expr {$d_o-1}]}
# report BTP values and relative errors
send_message info "BTP_N (normal mode 'base time period') is [format %.2f $t_n], relative error is [format %.1f [expr {$e_n*100}]]%."
send_message info "BTP_O (overdrive mode 'base time period') is [format %.2f $t_o], relative error is [format %.1f [expr {$e_o*100}]]%."
213,7 → 254,26
proc elaboration_callback {} {
# add software defines
set_module_assignment embeddedsw.CMacro.OWN [get_parameter_value OWN ]
set_module_assignment embeddedsw.CMacro.CDR_E [expr {[get_parameter_value CDR_E]?1:0}]
set_module_assignment embeddedsw.CMacro.OVD_E [expr {[get_parameter_value OVD_E]?1:0}]
set_module_assignment embeddedsw.CMacro.BTP_N [get_parameter_value BTP_N]
set_module_assignment embeddedsw.CMacro.BTP_O [get_parameter_value BTP_O]
set_module_assignment embeddedsw.CMacro.BTP_N \"[get_parameter_value BTP_N]\"
set_module_assignment embeddedsw.CMacro.BTP_O \"[get_parameter_value BTP_O]\"
set_module_assignment embeddedsw.CMacro.CDR_N [get_parameter_value CDR_N]
set_module_assignment embeddedsw.CMacro.CDR_O [get_parameter_value CDR_O]
# get clock frequency in Hz
set f [get_parameter_value F_CLK]
# get base time period
set btp_n [get_parameter_value BTP_N]
# get clock divider ratio
set cdr_n [get_parameter_value CDR_N]
# compute delay time in seconds [s]
if {$btp_n=="5.0"} {
set t_dly [expr {200.*($cdr_n+1)/$f}]
} elseif {$btp_n=="7.5"} {
set t_dly [expr {128.*($cdr_n+1)/$f}]
} elseif {$btp_n=="6.0"} {
set t_dly [expr {160.*($cdr_n+1)/$f}]
}
# give the software a u16.16 representation of delay frequency in kilo hertz [kHz]
set_module_assignment embeddedsw.CMacro.F_DLY [format %.0f [expr {pow(2,16) / (1000*$t_dly)}]]
}

powered by: WebSVN 2.1.0

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