⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 onewire_iface.v

📁 Viertex 2 开发板的接口程序
💻 V
字号:
//     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
//     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR
//     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION
//     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION
//     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS
//     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
//     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
//     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
//     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
//     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
//     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
//     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
//     FOR A PARTICULAR PURPOSE.
//
//     (c) Copyright 2004 Xilinx, Inc.
//     All rights reserved.
//
/*

-------------------------------------------------------------------------------
-- Title      : An interface to use 1-Wire(TM) Master
-- Project    : XUP Virtex-II Pro Demonstration System
-------------------------------------------------------------------------------
-- File       : ONEWIRE_IFACE.v
-- Company    : Xilinx, Inc.
-- Created    : 2001/03/15
-- Last Update: 2001/03/15
-- Copyright  : (c) Xilinx Inc, 2001
-------------------------------------------------------------------------------
-- Uses       : ONEWIRE_MASTER.v, SPECIAL_CLK_DIVIDER.v, defines.v
-------------------------------------------------------------------------------
-- Used by    : Any user system connecting to a 1-Wire device
-------------------------------------------------------------------------------
-- Description: An interface to show how to use the 1-Wire Master
--
--              It will output the data from the DS2401 byte by byte
--              while data_valid is asserted. Totally 8 bytes of data will
--              show up on the data bus in sequence of:
--                Family code (x01 for DS2401) : 1 byte
--                Serial number (e.g. xABCDEF) : 6 bytes
--                CRC value (based on polynomial=X^8 + X^5 + X^4 + 1) : 1 byte
--              So, user will get total 8 strobes of data_valid after the reset.
--                
--              It connects to the DS2401 through only one wire (sndq),
--              which is a bidirectional data path with internal pullup
--              resistor (about 13K Ohm, which is higher than the specification
--              of 5K Ohm on the DS2401 datasheet).
--
--              It uses a clock divider to generate a slow clock (1MHz) for
--              the 1-Wire Master module from the system clock. Use a generic
--              (CLK_DIV) to specify the divider ratio for different input
--              clock rate.
--
--              It generates a crc_ok signal which indicates all the data have
--              been received/output and crc checking is OK if the parameter
--              CheckCRC is defined.
--              
-------------------------------------------------------------------------------
*/

`include "defines.v"

module ONEWIRE_IFACE (sys_clk, sys_reset, dq, data, data_valid, crc_ok, sn_data);
input 			sys_clk; 		// system clock
input 			sys_reset; 		// active high reset
inout 			dq;				// one wire interface
output [7:0] 	data;			// received data byte
output 			data_valid;		// data output valid 20us strobe
output 			crc_ok;			// crc ok active high
output [47:0]	sn_data;		// paralled sn data

wire [7:0] 	data;
wire [47:0] sn_data;
wire 		data_valid;
wire 		crc_ok;
wire 		dq;

wire reset;
wire sys_clk;
wire clk_1MHz;

assign reset = sys_reset;

/*
// instantiate the clock divider module
CLK_DIVIDER CLK_DIVIDER (
.reset(reset),
.clk_in(sys_clk),
.clk_out(clk_1MHz)
);
*/
// instantiate the clock divider module
SPECIAL_CLK_DIVIDER SPECIAL_CLK_DIVIDER (
.reset(reset),
.clk_in(sys_clk),
.clk_out(clk_1MHz)
);

// instantiate the one wire master module
ONEWIRE_MASTER  ONEWIRE_MASTER(
.clk(clk_1MHz), 
.reset(reset), 
.dq(dq), 
.data_out(data[7:0]), 
.data_valid(data_valid), 
.crc_ok(crc_ok),
.sn_data(sn_data[47:0]),
.sys_clk(sys_clk)
);

// instantiate the INTERNAL pullup for the one wire interface if required
`ifdef  UsePULLUP

PULLUP PULLUP (
.O(dq)
);
`else
`endif

endmodule

`ifdef  UsePULLUP
module PULLUP(O); /* synthesis syn_black_box .noprune=1 */
output O /* synthesis syn_not_a_driver=1 */;
endmodule
`else
`endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -