2023年VerilogIIC通信实验笔记.pdf
《2023年VerilogIIC通信实验笔记.pdf》由会员分享,可在线阅读,更多相关《2023年VerilogIIC通信实验笔记.pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Wri t e by Gianttank我实验的是AT24co8 的单字节读,单字节写,页读和页写,在高于3.3 V 系统中他的通信速率最高400K H z的,我实验里用的是10 0 KHZ的速率。图 1 是硬件原理图图工Device Address图 2图 2 是器件地址,我的原理图是A 2接高。IIC 通信协议中要注意的地方:1.当时钟线SCL高电平时,假如把数据线SDA从高电平拉到低电平,则表达通信开始(START);假如把数据线SDA从低电平拉到高电平,则表达通信结束(STOP)、S D A 数据不变,视为数据采样。2,前一个STOP结束后。与下一个ST ART开始要保证5 m s 的
2、间隔。3.页写有字节限制,而页读没有,可以一次读出所有的数据。4 .S DA信号在FPG A 为接受方时要设立为高阻态。5.应答信号永远是接受方发送的,这个很重要,我就是卡在这里几天没找到因素。F P G A 在读数据的时候,第 9 个周期是FPGA发低电平给EE PROM的。图3引脚定义信号名称方向描述elkinpu i50M的主时钟r s t_nin p u t复位信号swlinput按键1低电平有效按下执行字节写sw2i np u t按键2低电平有效按下执行字节读s w 3in p u t按键3低电平有效按下执行页写sw 4i n p ut按键4低电平有效按下执行页写SDAin o u
3、tH C数据端口SCLoutputI I C时钟端口1 ed dataoutput数码管段选led c o moutput数码管位选代码中分了两个模块,i ic _ c o m模块除了执行和1 2 c通信有关的代码设计外,尚有按键检测部分,而 edshow模块只是驱动数码管显示读出的数据。对于这个通信的过程,内部使用了一段式状态机进行设计。图4是状态机的状态图。具体每个状态见程序。图41.字节写Byte WriteSTARTDEVICEADDRESSWRITE WORD ADDRESSDATASDAUNE JU工n i I-:i inACACKLSBMSBACKR/wLSBMSB图 5Mod
4、e Is im 后仿真的图n n in ir i|n p|in|jT蓝色为sda数据线高阻态,fp g a接受eeprom应答。写入数据88h.2.字 节读Random Reads wT RAIR DEVICE T WORDT ADDRESS E ADDRESS nS;DEVICEREADMSBMSBACKR/wLSBACKLSBMSBAckLSBDATA nDUMMY WH YESTOP-NoACK图 6Mod e Is im 后仿真的图nK hnlJ JrLIiMrLrU V u T I3.页写,Page WritesTAR DEVICET ADDRESS0A LinnMSBwRITE W
5、ORD ADDRESS(n)ACKR/WLSBACK图 7由于我只有8个数码管,所以我程序里的页写,页读都只有4个数据。M o d e l s im 后仿真的图可以看到写入数据位2 lh,43h,6 5hz87ho4.八龙Sequential ReadDEVICEADORESSSOA UNEACKREAD厂uLR/wDATA nACKSTOPNoACK图8随机字节读和当前字节读都能触发页读,我只做了随机字节读M odel s im后仿真的图二匚二匚二匚:二匚二匚匚:二:匚二:匚二工:二:匚:二:二:匚二匚二H WLLT【I I I LI;也这里就是应答是fpg a应答给e e p r om的。
6、最后希望这篇文档能帮助对I IC协议还不够了解的同学。源程序在下一篇文章中。顶层1 t i m e s c a l e I n s /I p sa m o d u 1 e i i c m a x (4 c I k,r s t _ n,5 s w l,s w 2,s w 3,s w 4,s c l,s d a,l e d d a t a,l e d c o m);5 0 M H z复位信号,低有效 i n p u t s w 1 ,s w 2,s w 3,s w 4 ;按键,(1按下执行写入操作,2按下执行读操作,3按下执行连写操作,4按下执行15 连读操作)89101 1 i n p u t
7、c l k;A i n p u t r s t n;1 6o u t p u t s c l;2 4co 8的时钟端口1 718i n o u t s d a;/2 4 c o 8的数据端口192 0o u t p u t 7:0 l e d c o m;数码管片选信号,低有效21o u t p u t 7:0 1 e d d a t a;7段数码管(不涉及小数点)222324wi r e 7:0 t a n s d a t a;/传送的数据25w i r e 2:0 a c k f 1 a g;标志2627i i c c o mi i c c o m (2 829.c l k(c I k),
8、30.r s t _ n(r s t _ n ),31.s w 1(s w l),3 2.s w 2(s w2),J 334.s w 3(s w 3),35.s w 4 (s w 4 ),36.s d a (s d a),3 7.s c l (s c l),3839.a c kf l a g(a c k f 1 a g),40.o u t d a t a(t a n s d a t a)4 1);42l e d s h o w1 e d s h o w(43A A.c 1 k(c l k),45.r s t _ n(r s t _ n),.a c kf l a g(a c k f l a g)
9、,.1 e d c o m (l e d c om),.1 e d d a t a (l e d d a t a),.i n d a t a (t a n s d a t a));end m o d u l e I I C C O M模块2345678910111213141 51617181920212223242526272829303132333435t i m e s c a l e I n s /Ipsm o d u l e i i c c o m(c I k,r s t _ n,s w l,s w 2,s w 3,s w 4,s c l,s d a,a c kf l a g,o u
10、 t d a t ai n p u t c 1 k;i n p u t r s t n;/50M H z/复位信号,低有效inp u t s w l,s w 2,s w 3,s w 4;/按键,(1按下执行写入操作,2按下执行读操作,3按下执行连写操作,4按下执行连读操作)o u t p u t s c l ;/2 4 c o 8 的时钟端口o u t p u t 2:0 a c kf 1 a g;/后面显示接受到数据的标准i n o u t s d a;/24 c o 8 的数据端口o u t p u t 7:0 o u t d a t a;/数码管显示的数据/按键检测r e g s w 1
11、 _ r,s w 2_ r,s w3 _ r,s w 4 _ r ;/键值锁存寄存器,每20m s检测一次键值reg 19:0 cnt_ 2 0ms;/2 0ms 计数寄存器a l w a y s (p o s e d ge c 1 k o r n e ge d g ers t _ n)i f (!r s t _ n)c n t _ 2 0 m s =2 0 d O;e l s e i f (c n t 20m s =2 0*h f f f f f )e n t _ 2 0 m s =2O h O;e I s e c n t _ 20m s =e n t _ 20m s +1 b 1;/不断计
12、数3637383 9404 142434445464748495 0515253545 556575859606162636465666 76869707 17273747576777 879808182838485868 78889909192939495969798991 00101I 02103104105106107I 08109110111112113114a l w a y s (p o s e d g e e l k o r n e ge d g e r s t _ n )i f(!r s t _ n)b e gi ns w 1 _r =V b 1;/键值寄存器复位,没有键盘按下
13、时键值都为1s w 2 _ r =f b l;s w 3 _ r =f b l;s w 4 _ r h f f f f 0)b e gi ns w l _ r =s w l;按键值锁存s w 2_ r =s w 2;s w 3 r =s w 3;s w 4 _r =s w 4 ;e n d/-分频部分r e g 2:0 c n t ;/c n t=0:s c l 上升沿,c n t =1:s c 1 高电平中间,c n t =2:s c 1 下降沿,c n t=3:s c l 低电平中间r e g 8:0 c n t _ d e l a y ;/50 0循环计数,产生i i c所需要的时钟r
14、e g s c l _ r;时钟脉冲寄存器a I w a y s (p o s e d ge e l k o r n e ge d ge r s t _ n)i f (!r s t _ n)e n t _d e l a y =9 d O;e l s e i f (c n t d e l a y =9 d 4 99)c n t d e l a y 0 9 d O:/计数至 U 1 0 u s 为 s c l 的周期,即 1 0 O KH ze l s e e n t _d e l a y =c n t d e 1 a y +T b 1;/时钟计数a I w a y s (p o s e d g
15、e e l k o r n e ge d ge r s t n )b e g i ni f (!r s t _ n)e n t =3 d 5;e l s e b e g i nc a s e (c n t _ d e l a y)9*d 1 2 4:c n t =3 d l;c n t=l :s c 1高电平中间,用于数据采样9d 25 5:e n t =3Z d 2;c n t=2:s c 1 下降沿后面点9 d 3 7 4 :e n t =3 d 3;c n t=3:s c 1低电平中间,用于数据变化9 d 4 9 5:e n t d O;/c n t=0:s c l 上升沿前面点d e
16、f a u l t:e n t =3 d 5;e n d c a s ee n de n dd e f i n e S C L _ P O Sd e f i n e S C L _ I I T Gd e f i n e S C L.NE Gd e f i n e S C L _ L O W(e n t =3 d 0)(c n t=3 d l)(c n t=3*d 2)(e n t=3*d 3)/c n t =0:s c l上升沿前面点/c n t=l:s c l高电平中间,用于数据采样/c n t =2:s c l下降沿后面点c n t=3:s c 低电平中间,用于数据变化a l w a y
17、s (p o s e d ge e l k o r n e ge d ge r s t _n)i f (!r s t _ n)s c l _ r =T b 0;e 1 s e i f (c n t _ d e l a y=9,d 4 9 9)s c l _r =1b l;e l s e i f (c n t _ d e 1 a y=9 J d 24 9)s c l _ r =1b O;a s s i gn s c l =s c 1 _ r ;/产生i i c所需要的时钟/需要写入24 C 02的地址和数据d e f i n e D E VI C E R E A Dd e f i n e DEV
18、 I C E W R I T Ed e f i n e WR T T E _ D A T A Od e f i n e WR I T E _ D A T A 1d e f i n e W R I T E _ D A T A 2d e f i n e WR I T E _ D A T A 3d e f i n e WR I T E D A T A 48 b 10 1 0 10018b l 01010008Jb 1 0 0 0_ l 0 0 08 b 0 010_ 00018 b 0100_ 00118b O 1 1 0_ 01018*b l 0 00 0111/s c l信号上升沿 s c l信
19、号下降沿/被寻址器件地址(读操作)/被寻址器件地址(写操作)/写入E E P R O M的数据e00101en:mr7:7a11177rfgB Y T E _ A D D Rd b _ r;r e a d _ d a t a;8*b 0 00 0 01 0 0写入/读出E E P R O M的地址寄存器/在I I C上传送的数据寄存器/读出E E P R O M的数据寄存器o u t d a t a _ r;/输出数据贮存器e r P A G E D A T A _ NU M =3*d 4;页写数据个数1 151 161171 1 81 191 2012 11221231241251 2612
20、71 2812913013113 21 331341351361371381391 4014 11421431441451461 4714814915015115215 31541551561571581 591601611 621631641 651661671681691701 7117 21731741751761 771781 791801 81182183184185186/读、写时序p a r a m e t e rp a r a m e t e rpara m e t e rp a r a m e t e rp a r a m e t e rp a r a m e t e rp
21、a r a m e t e rp a r a m e t e rp a r a m e t e rp a r a m e terp a r a m e t e rp a r a m e t e rp a r a m e t e rp a r a m e t e rpara m e t e rpara m e t e rp a r a m e t e rI D L ES T A R T 1 =A D D 1A C K 1A D D 2A C K 2S T A R T 2A D D 3A C K 3A C K RD A T AP A G E RP A G E WA C K 4H I G HS T
22、O P IS T O P 2=1 T b 0_ 0 0 00_ 00 0 0 _ 000 0_ 00 0 1;/初始态1 7*b 0_ 0000_ 0000_ 0 0 0 0 _ 00 10:起始信号=1 7 b 0_ 00 0 0 _ 0000_ _ 000 0 _ 0100;/写入器件地址=17 b 0 _ 0 0 00_ 0000_ 0 0 0 0 _ 1 000;应答=1 7 b 0 _ 0 0 0 0_ 0 000_ 0 001_ 0000;/写入字节土也址=17*b 0 _ 000 0 _ 0000_ 0 010_ 000 0;/应答=i r b o o o o o o o o o
23、 _ o i o o o o o o;/读操作开始前的起始信号=1 T b O 0 0 00 0 000 10 0 0_ 000 0;写入器件地址=1 7 b 0 000 0 0 001 0 0 0 0 _ 0 000;/应答=17*b 1 00 0 0_ 000 0 00 00 0 000;/f p g a 给应答=1 7 b 0 00 0 0 _ 0 0 10 0000 0000;/字节读写二1 7 b 0_ 0000_ 0 1 00_ 0 0 0 0 _ 0000;/页读=1 V b 0_ 0 0 00_ 1000_ 0 0 00_ 000 0;/页写=17 b 0_ 0 001_ 00
24、00_ 0 0 0 0 _ 0 0 00;应答=1 7*b 0 _ 0 010_ 00 0 0_ 0 0 00_ 0 0 00;高电平=17b 0_ 0 1 00_ 000 0 _ 0 0 00_ 0000;/停止位=17 b 0 _ 1 000_ 0 000_ 00 0 0_ 0 0 0 0;/延时同步r e g l 6:0 c s t a t e ;/状态寄存器r e g s d a _ r;输出数据寄存器r e g s d a l i n k;/输出数据s d a信号i n o u t方向控制位r e g 3:0 n u m:读写的字节计数r e g 2:0 a c kf 1 a g;连
25、读时的数据标志r e g 2:0 p a ge e n t;/连读连写时的数据计数器r e g 7:0 p a ge d a t a _ r:连读储存器a l w a y s (p o se d g e c 1 k o r n e g e d ge r s t _ n)b e gi ni f (!r s t _ n)b e gi np a ge d a t a _ r =8d O;e n de l s e b e g i nc a s e (p a g e c n t)3 d O:p a ge d a t a _ r =WR I T E _ D A T A 1;3 d 1 :p a ge d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 VerilogIIC 通信 实验 笔记
限制150内