学习状态机的总结
="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">近日又开始恢复自己的FPGA学习计划。之前由于一个比赛停了几天,比赛完了后又抓紧时间继续FPGA的学习。这两天也学了一些新知识,拿出来与大家分享。
我在写状态机的时候,发现了一些开始看似很简单,也很容易被自己忽视的问题,但自己却常常在这上面犯错误,今天将他们都捡起来,以后势必会经常看看。
1. 当我们需要产生开始、结束信号时,需要先将信号线拉低或拉高。然后再拉高或拉低。这样处理可以确保产生开始、结束信号。
2. assign sda = link_sda ? sdabuf : 1’b0; 这种表达方便我们操作总线。
3. 如果对于某个模块,输入的是sclk,输出的是scl,而后面我们检测scl的状态,那么一般应使sclk的频率高于scl,以便我们可以通过posedge sclk实时检测到scl的状态。【这条非常有用,或许比较难懂】
4. 之前的第一条说到开始、结束信号的产生,这里我们再说一下如何检测到开始、结束信号。其实,方法也非常地简单,就是根据波形图,当输入的波形符合要求时,就置位标志位。【注意及时清零,这也是非常重要的一条,会给写程序带来极大地方便。】
如果,大家要看具体的例子的话,可以参考夏宇闻编著的《Verilog数字系统设计教程》第15章例【15.2】。
文章评论(0条评论)
登录后参与讨论