验证成功的iic verilog 代码

验证成功的iic verilog 代码

ID:40652860

大小:24.65 KB

页数:11页

时间:2019-08-05

验证成功的iic verilog 代码_第1页
验证成功的iic verilog 代码_第2页
验证成功的iic verilog 代码_第3页
验证成功的iic verilog 代码_第4页
验证成功的iic verilog 代码_第5页
资源描述:

《验证成功的iic verilog 代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、`timescale1ns/1ps//////////////////////////////////////////////////////////////////////////////////Company:kuayuanelectronicandteclonogy//Engineer:xiao;////CreateDate:2012/11/15//DesignName:cycloneIV//ModuleName:iic_top//ProjectName:iic_project//TargetDevice:cycloneIV//Toolversions:Q

2、uartus12.0//Dependencies:verilog////Revision:V1.0//RevisionFileCreated////////////////////////////////////////////////////////////////////////////////moduleiic_project(clk,rst_n,bu1,bu2,scl,sda,LED);inputclk;//50MHzinputrst_n;//复位信号,低有效inputbu1,bu2;//按键1、2,(1按下执行写入操作,2按下执行读操作)outputs

3、cl;//24C02的时钟端口inoutsda;//24C02的数据端口output[7:0]LED;//数码管显示的数据//按键检测regsw1_r,sw2_r;//键值锁存寄存器,每20ms检测一次键值reg[19:0]cnt_20ms;//20ms计数寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)cnt_20ms<=20'd0;elsecnt_20ms<=cnt_20ms+1'b1;//不断计数always@(posedgeclkornegedgerst_n)if(!rst_n)beginsw1_r<=1'b1

4、;//键值寄存器初始化为高电平;sw2_r<=1'b1;endelseif(cnt_20ms==20'hfffff)beginsw1_r<=bu1;//按键1值锁存sw2_r<=bu2;//按键2值锁存end//分频部分reg[2:0]cnt;//cnt=0:scl上升沿,cnt=1:scl高电平中间,cnt=2:scl下降沿,cnt=3:scl低电平中间reg[8:0]cnt_delay;//500循环计数,产生iic所需要的时钟regscl_r;//时钟脉冲寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)cnt_d

5、elay<=9'd0;elseif(cnt_delay==9'd499)cnt_delay<=9'd0;//周期为20us,即100KHzelsecnt_delay<=cnt_delay+1'b1;//时钟计数;always@(posedgeclkornegedgerst_n)beginif(!rst_n)cnt<=3'd5;elsebegincase(cnt_delay)9'd124:cnt<=3'd1;//cnt=1:scl高电平中间,用于数据采样9'd249:cnt<=3'd2;//cnt=2:scl下降沿9'd374:cnt<=3'd3;//cnt=3:

6、scl低电平中间,用于数据变化9'd499:cnt<=3'd0;//cnt=0:scl上升沿default:cnt<=3'd5;endcaseendend`defineSCL_POS(cnt==3'd0)//cnt=0:scl上升沿`defineSCL_HIG(cnt==3'd1)//cnt=1:scl高电平中间,用于数据采样`defineSCL_NEG(cnt==3'd2)//cnt=2:scl下笛?`defineSCL_LOW(cnt==3'd3)//cnt=3:scl偷缙街屑?用于数据变化always@(posedgeclkornegedgerst_n)i

7、f(!rst_n)scl_r<=1'b0;elseif(cnt==3'd0)scl_r<=1'b1;//scl信号上升沿elseif(cnt==3'd2)scl_r<=1'b0;//scl信号下降沿assignscl=scl_r;//产生iic所需要的时钟//需要写入24C02的地址和数据`defineDEVICE_READ8'b1010_0001//被寻址器件地址(读操作)`defineDEVICE_WRITE8'b1010_0000//被寻址器件地址(写操作)`defineWRITE_DATA8'b1001_1010//写入EEPROM的数据`defineB

8、YTE_ADDR8'b0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。