三态门如何在FPGA中实现与仿真.docx

上传人:lao****ou 文档编号:874681 上传时间:2024-07-08 格式:DOCX 页数:3 大小:79.26KB
下载 相关 举报
三态门如何在FPGA中实现与仿真.docx_第1页
第1页 / 共3页
三态门如何在FPGA中实现与仿真.docx_第2页
第2页 / 共3页
三态门如何在FPGA中实现与仿真.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《三态门如何在FPGA中实现与仿真.docx》由会员分享,可在线阅读,更多相关《三态门如何在FPGA中实现与仿真.docx(3页珍藏版)》请在第一文库网上搜索。

1、三态门如何在FPGA中实现与仿真三态门在数字电路上可以说是应用的非常广泛,特别是一些总线上的应用,因而,随着数字电路的发展,就避免不了用硬件描述语言在FPGA上来设计实现三态门。由于最近在玩摄像头,免不了的要写I2C协议,总线操作,就应用到了三态门,所以就在这好好总结一下三态门的设计实现及其仿真。一.三态门在FPGA上的设计实现首先我们要明白三态门的三态是指其输出有三种状态:高电平(逻辑1)、低电平(逻辑0)和高阻态(Hi-Z),且三态门都有个使能端EN来控制门电路的通断,其功能模型如图1-1所示:看着图1,我们一眼就明白其功能的实现了,在FPGA上用硬件描述语言VeriIOg来描述就是这几句

2、语句:inoutY,/definethree-stategateYinyourmodu1eregA;/intermediatedriverregisterswireC;/Enab1esigna1assignY=(C=1b)?A:1,bz;/Ccontro1Yo-off其实我们只要搞清楚当使能端C为低电平使能时,数据线Y作输出,其电平信号由自己内部信号决定,故用中间变量A做存储接口;当使能端C为高电平失能时,数据线作输入,其电平由外部信号决定,故为高阻态。所以,三态门的控制就在于搞清我们是要让数据线Y作输入还是作输出,一句assignY=(C=1,b)?A:1,bz;即可实现,作输出时,C使能,

3、作输入时,C失能。二.三态门在FPGA上的仿真三态门在FPGA上的设计实现还是比较简单的,难就难在仿真三态门的功能。以前也都练习过三态门的设计,但由于其仿真老是实现不了,也就作罢了,现如今又用到了三态门,不得不把仿真弄出来,不然心里过意不去。网上也很多这类的教程,但我认为都讲得比较含蓄,不够直白,也可能是我太笨,怎么都没理解,后面通过自己的反复练习思考,终于明白了其中的奥妙。其实,三态门的仿真跟其设计是相通的,其测试脚本的编写刚好和硬件描述设计颠倒过来。我们首先要明白,仿真测试脚本的编写是测试我们设计的电路是否正常工作,说白点就是给我们设计的电路信号一些相应激励,设计文本里的输入信号,如C1k

4、,在测试脚本里就变成了输出,我们要产生C1k这个回国,输出给予设计文本激励,才能让设计的电路工作,进而测试其是否正常工作。总之,一句话,设计文本里的输入在测试脚本里变成输出,设计文本里的输出在测试脚本里变成输入。明白了这个关系,我们再来说一下三态门的仿真,当设计文本里的数据线Y作输出时,测试脚本里要让Y呈高阻态,因为数据线Y此时在测试脚本里输入,设计文本驱动它输出;同理,当设计文本里的数据线Y作输入时,测试脚本里让Y通过中间变量treg_Y驱动它输出到设计文本里,使其模拟主机从机通过单总线的数据线Y进行通盘。下面给出上篇文章SCCB协议仿真的测试脚本来示范三态门测试脚本的编写,设计文本就是主机

5、,测试脚本就是从机:1首先,我们知道SCCB里的单总线数据线是i2cqat,在测试脚本里将它定义为线网型,并定义一个寄存器型信号%i2csdat,让它作中间驱动信号,驱动i2jsdat,具体实现如下面代码所示:wirei2c_sdat;regtreg_i2c_sdat=b;/treg_i2c_sdat;/assignstatements(ifany)assigni2c_sdat=treg_i2c_sdat;/treg_i2c_sdat;2.当在设计文本里,主机要配置从机寄存器进行SCCB的写操作时,测试脚本里应将treg_i2c_sdat置为高阻态,这里测试脚本模拟从机接收主机发送的数据,测试

6、加本星的数据线i2jsdat相对于设计文本作输入,测试脚本接收设计文本发送的数据,具体实现如下面代码所示:/IDADD6,d1,6d2,6,d3,6,d4,6d5,6d6,6,d7,6d8:begini2c_config_start=1,b1;i2cwr=b1;/writei2c_configdata=8,haa,8,hf,8,h55;treg_i2c_sdat=bz;/inputi2c_sdatif(i2c_sc1kneg)state=state+b1;end3.当在设计文本里,主机发送完8bit数据后等待从机应答时,测试脚本里应将trcg_i2c_sdat置为0,驱动i2c_sdat输出低电平发出应答,这里测试脚本模拟从加给主机发出应答,测试脚本里的数据线i2jsdat相对于设计文本作输出,测试脚本给设计文本发送应答,具体实现如下面代码所示:/ACK6d9:begintreg_i2c_sdat=1,b;/outputACKif(i2c_sc1k_neg)state=state+b1;end总体上的仿真设计就是这了,可能我说的比较绕,但其中的原理各人认真思考清楚吧,具体代码自己按照我上面的三个方面模仿组织吧。最后粘贴一张SCCB协议的仿真图,虽然上次已经用过了:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服