摘要: 为了完成SAA7111A的初始化,FPGA需要完成I2C控制器的设计。 之前本科的时候初步接触过I2C,但是编写一个Verilog的控制器还是觉得有点难度的。说实话,那时候都无从下手,对实现这样一个协议完全没有思路。后来发现夏宇闻教授的那本经典教材上有关于I2C协议的内容,如获至宝的感觉。书中介绍的是EEPROM的读写控制,但这没有影响,学习了书上的代码,这时心里就有数了。然后参考师兄的代码(原... 阅读全文
posted @ 2013-10-05 17:01 aikimi7 阅读(899) 评论(2) 推荐(0) 编辑
摘要: 手头接手的项目是利用FPGA进行图像的采集、存储、处理和传输。项目接手有近一年了,现在回过头来总结下。 存储采用了外部的SRAM。一开始就按自己的思路设计SRAM读写控制器,中间采用过黑金推荐的仿顺序操作实现控制,这方法挺好理解,接近于状态机。但是后来发现,这个方法不是很好,网上和师兄都不推荐,个人也觉得是作者的一种状态机风格,并不一定适合自己。所以,后来开始接触状态机。状态机的学习走了很多弯路,自己参考了《设计与验证》这本书中“如何写好状态机”这一章、Clifford E. Cummings(他网站上的文章可以好好拜读下http://www.sunburst-design.com/pape. 阅读全文
posted @ 2013-10-05 16:09 aikimi7 阅读(736) 评论(0) 推荐(0) 编辑
摘要: 1.多个always语句不能对同一变量赋值。 2.assign语句只能进行阻塞赋值,用来描述组合逻辑。3.verilog描述方式:结构描述(门级描述和模块调用)、数据流描述(assign,wire型)、行为描述(initial、always,reg型)。4.数据流描述根据信号(变量)之间的逻辑关系,... 阅读全文
posted @ 2013-10-05 15:39 aikimi7 阅读(2886) 评论(0) 推荐(0) 编辑
摘要: 一、硬件描述语言Verilog 粗略地看Verilog与C语言有许多相似之处。分号用于结束每个语句,注释符也是相同的(/* ... */和// 都是熟悉的),运算符“==”也用来测试相等性。Verilog的if..then..else语法与C语言的也非常相似,只是Verilog用关键字 begin和end代替了C的大括号。事实上,关键字begin和end对于单语句块来说是可有可无的,就与C中... 阅读全文
posted @ 2013-10-05 15:34 aikimi7 阅读(1937) 评论(0) 推荐(0) 编辑
摘要: 最初,十几年前的初中,首次接触三极管就对“三极管有放大作用”中的“放大”二字吸引,第一反映就是很想为什么能放大?怎么放大的?具体过程怎么样?从那时候起开始翻查各式各样资料,想把“放大”原理弄清楚。为此,学了半导体制造,半导体物理,固态物理,电路设计等数门课程,结果如下: 1,所有资料要么从具体电路,用电流表量出三极电流大小,比较后给出结论,根据那电流关系得出“三极管能放大”的结论。显然这个结果... 阅读全文
posted @ 2013-10-05 15:33 aikimi7 阅读(791) 评论(0) 推荐(0) 编辑
摘要: RT,否则警告Warning: Tri-state node(s) do not directly drive top-level pin(s),会利用或门代替中间的扇出fan-out. 原因:在进行FPGA设计时,对于FPGA内部的信号不能出现被赋值为高阻的状态,只有顶层的信号,即输出的信号才可以赋值为高阻态。 找出这个信号,然后把赋值为x'bz改为x'b0或x'b1(具体是改为x'b0还是... 阅读全文
posted @ 2013-10-05 15:10 aikimi7 阅读(5325) 评论(0) 推荐(0) 编辑
摘要: 一般情况下,DC把case语句综合成选择器电路,但也可能把case语句综合成优先权译码电路。有时,优先权译码电路是不必要的,这是可以使用“//synopsysparallel_case”引导语句强迫DC把case语句综合成选择器电路。这种引导格式在case状态声明没有完全列举时应用较多。Examplealways@(cs_state)begincase(cs_state)//synopsysparallel_case2’b00:next_state=2’b01;2’b01:next_state=2’b00;2’b10:next_state=2’b10;default:next_state=.. 阅读全文
posted @ 2013-10-05 14:04 aikimi7 阅读(3814) 评论(0) 推荐(1) 编辑