IIC接口E2PROM(AT24C64) 读写VERILOG 驱动源码+仿真激励文件:module i2c_dri #( parameter SLAVE_ADDR = 7'b1010000 , //EEPROM从机地址 parameter CLK_FREQ = 26'd50_000_000, //模块输入的时钟频率 parameter I2C_FREQ = 18'd250_000 //IIC_SCL的时钟频率 ) ( input clk , input rst_n , //i2c interface input i2c_exec , //I2C触发执行信号 input bit_ctrl , //字地址位控制(16b/8b) input i2c_rh_wl , //I2C读写控制信号 input [15:0] i2c_addr , //I2C器件内地址 input [ 7:0] i2c_data_w , //I2C要写的数据 output reg [ 7:0] i2c_data_r , //I2C读出的数据 output reg i2c_done , //I2C一次操作完成 output reg i2c_ack , //I2C应答标志 0:应答 1:未应答 output reg scl , //I2C的SCL时钟信号 inout sda , //I2C的SDA信号 //user interface output reg dri_clk //驱动I2C操作的驱动时钟 );//localparam definelocalparam st_idle = 8'b0000_0001; //空闲状态localparam st_sladdr = 8'b0000_0010; //发送器件地址(slave address)localparam st_addr16 = 8'b0000_0100; //发送16位字地址localparam st_addr8 = 8'b0000_1000; //发送8位字地址localparam st_data_wr = 8'b0001_0000; //写数据(8 bit)localparam st_addr_rd = 8'b0010_0000; //发送器件地址读localparam st_data_rd = 8'b0100_0000; //读数据(8 bit)localparam st_stop = 8'b1000_0000; //结束I2C操作//reg definereg sda_dir ; //I2C数据(SDA)方向控制reg sda_out ; //SDA输出信号reg st_done ; //状态结束reg wr_flag ; //写标志reg [ 6:0] cnt ; //计数reg [ 7:0] cur_state ; //状态机当前状态reg [ 7:0] next_state; //状态机下一状态reg [15:0] addr_t ; //地址reg [ 7:0] data_r ; //读取的数据reg [ 7:0] data_wr_t ; //I2C需写的数据的临时寄存reg [ 9:0] clk_cnt ; //分频时
标签: iic 接口 e2prom at24c64 verilog 驱动 仿真
上传时间: 2021-11-05
上传用户:
5V USB扁口接口TP4055锂离子电池充电接口板ALTIUM设计硬件原理图+PCB文件,2层B板手设计,大小为33*18mm,,可以做为你的学习设计参考。TP4055 是一款完整的单节锂离子电池充电器,带电池正负极反接保护,采用恒定 电流/恒定电压线性控制。其 SOT 封装与较少的外部元件数目使得 TP4055 成为便携式应 用的理想选择。TP4055 可以适合 USB 电源和适配器电源工作。 由于采用了内部 PMOSFET 架构,加上防倒充电路,所以不需要外部检测电阻器和 隔离二极管。热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度条件 下对芯片温度加以限制。充满电压固定于 4.2V,而充电电流可通过一个电阻器进行外部 设置。当电池达到 4.2V 之后,充电电流降至设定值 1/10,TP4055 将自动终止充电。 当输入电压(交流适配器或 USB 电源)被拿掉时,TP4055 自动进入一个低电流状 态,电池漏电流在 2uA 以下。TP4055 的其他特点包括充电电流监控器、欠压闭锁、自 动再充电和一个用于指示充电结束和输入电压接入的状态引脚。
上传时间: 2021-11-22
上传用户:trh505
FPGA片内FIFO读写测试Verilog逻辑源码Quartus工程文件+文档说明,使用 FPGA 内部的 FIFO 以及程序对该 FIFO 的数据读写操作。FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////module fifo_test( input clk, //50MHz时钟 input rst_n //复位信号,低电平有效 );//-----------------------------------------------------------localparam W_IDLE = 1;localparam W_FIFO = 2; localparam R_IDLE = 1;localparam R_FIFO = 2; reg[2:0] write_state;reg[2:0] next_write_state;reg[2:0] read_state;reg[2:0] next_read_state;reg[15:0] w_data; //FIFO写数据wire wr_en; //FIFO写使能wire rd_en; //FIFO读使能wire[15:0] r_data; //FIFO读数据wire full; //FIFO满信号 wire empty; //FIFO空信号 wire[8:0] rd_data_count; wire[8:0] wr_data_count; ///产生FIFO写入的数据always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) write_state <= W_IDLE; else write_state <= next_write_state;endalways@(*)begin case(write_state) W_IDLE: if(empty == 1'b1) //FIFO空, 开始写FIFO next_write_state <= W_FIFO; else next_write_state <= W_IDLE; W_FIFO: if(full == 1'b1) //FIFO满 next_write_state <= W_IDLE; else next_write_state <= W_FIFO; default: next_write_state <= W_IDLE; endcaseendassign wr_en = (next_write_state == W_FIFO) ? 1'b1 : 1'b0; always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) w_data <= 16'd0; else if (wr_en == 1'b1) w_data <= w_data + 1'b1; else w_data <= 16'd0; end///产生FIFO读的数据always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) read_state <= R_IDLE; else read_state <= next_read_state;endalways@(*)begin case(read_state) R_IDLE: if(full == 1'b1) //FIFO满, 开始读FIFO next_read_state <= R_FIFO; else next_read_state <= R_IDLE; R_FIFO: if(empty == 1'b1)
上传时间: 2021-12-19
上传用户:20125101110
描述:晶体管测试仪是一个很实用的小工具,它可以全自动测量电阻,电容、电感,对于电感和电容,还能测试出等效串联电阻(ESR)。除此之外,它还可以自动识别二极管、BJT、MOSFET等元件,并且测量他们的相关属性。这一切所有的操作都只需要简单的将元件连接到测试座上,甚至不需要区分管脚顺序。测试仪可以自动分辨它们并识别出管脚的顺序。原理图:PCB:
上传时间: 2022-01-22
上传用户:fliang
使用AD16版本按照以上方法操作无误,方便大家画好的PCB转为GERBER文件时参考。
上传时间: 2022-01-24
上传用户:
GD32F3系列、F4系列、E103,使用FPU以及DSP库的操作方法,内含库文件
上传时间: 2022-02-18
上传用户:shjgzh
第一节主界面说明1-1主界面M ain Interface图形操作界面是建模的最简单方法之一,当我们在模型浏览器(M odelNavigator)中设定好应用模式以后,会自动弹出图形操作界面。下图表示2D应用模式的图形操作界面:第二节文件莱单File$2-1新建New新建:开启模型浏览器,建立新模型52-2打开模型库O pen M odelL.brary打开模型库:打开模型库中已存在的例子$24打开open打开:载入已经建好的模型$25保存Save保存:储存模型$26另存为SaveAs另存为:在另一个路径下储存模型$2-7 打印Print打印:打印模型28生成报告Generate Report生成报告:生成一个能详细说明模型的应用模式、几何属性、材料和边界设置等的报告文件。其中,在Format中设定生:成报告的格式、存放的路径;在Contents中选择报告包含哪些部分.
上传时间: 2022-06-20
上传用户:
线程(thread)技术早在60年代就被提出,但真正应用线程到操作系统中去,是在80年代中期。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?使用多线程的理由之一是和进程相比,它是一种非常”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段。而运行于一个进程中的多个线程,它们之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间所需要的时间。使用多线程的理由之二是线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式费时且很不方便。由于同,进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这样快且方便。在计算机中,凡是提供服务的一方我们称为服务端(Server),而接受服务的另一方我们称作客户端(Client)。不过客户端及伺服端的关系不见得一定建立在两台分开的机器上,提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上,这样在同一台机器上就同时扮演伺服端及客户端。线程间方便的通信机制可以使得在我们在服务端和客户端方便的进行通信传输与各种操作,可以通过运用多线程机制方便实现上传、下载文件:增加、删除用户:以及在服务端进行文件的管理。
上传时间: 2022-06-20
上传用户:
简要介绍本文件的目的是,针对潮湿、再流焊和工艺敏感器件,向生产商和用户提供标准的操作、包装、运输及使用方法。所提供的这些方法可避免由于吸收湿气和暴露在再流焊温度下造成的封装损伤,这些损伤会导致合格率和可靠性的降低。一旦正确执行IPC/JEDEC J-STD-033D,这些工艺可以提供从密封时间算起12个月的最短保质期。由IPC和JEDEC开发。一般的IC封装零件都需要根据MSL标准管控零件暴露於环境湿度的时间,以确保零件不会因为过度吸湿在过回焊炉时发生popcom(爆裂)或delamination(分层)的后果,不同的零件封装会产生不同的MSL等级,当湿气进入零件越多,零件因温度而膨胀剥离的风险就越高,基本上湿度敏感的零件在出厂前都会经过一定时间及温度的烘烤,然后连同乾燥剂(desiccant)一起加入真空包装中来达到最低的湿气入侵可能。本文件的目的是,针对潮湿/再流焊敏感表面贴装器件,向生产商和用户提供标准的操作、包装、运输及使用方法。所提供的这些方法可避免由于吸收湿气和暴露在再流焊温度下造成的封装损伤,这些损伤会导致合格率和可靠性的降低。一旦正确执行,这些工艺可以提供从密封时间算起12个月的最短保质期。由IPC和JEDEC开发。
标签: ipc j-std-033d
上传时间: 2022-06-26
上传用户:
1 do文件简介do文件是一次执行多条命令的脚本,通过do文件可以把多个操作步骤简化成一条命令。2 do文件建立do文件建立方式较多,常用的建立方式有如下两种:a)在ModelSim软件中执行【File]->【New】->【Sourcel-【do1,会在ModelSim的MDI窗口中打开一个新的文件窗口,编辑完该do文件后执行【File]->【Save As.】即可保存成do文件:b)在Windows系统中新建一个记事本,在“另存为”的时候把后缀名改为.do也可以保存为do文件,可以以记事本的形式进行编辑,也可在ModelSim中打开进行编辑。3 do文件编写步骤ModelSim仿真的一般步骤如下:a)创建一个工程和工程库;b)加载设计文件,包括源文件和testbench文件:c)编译源文件;d)运行仿真,并查看结果:e)进行工程调试。
标签: do文件
上传时间: 2022-06-26
上传用户: