|
门的次级管理信号
门的次级管理信号,按照优先级排列一下:
1.异步清零信号 – aclr
2.上电复位信号, - pre
3.异步载入信号 – aload
4.使能信号 – ena
5.同步清零信号 – sclr
6.同步载入信号 – sload
7.数据输入信号 – data
在FPGA设计中,只有在输入输出上可以使用双向信号,双向信号是不能使用在内部逻辑上的。一定不要用这种信号,否则工具会综合出一个你都不知道会是什么东西的东西。针对一个双向端口,你需要把它变成一个输入信号 in,一个输出信号:out, 和一个输出使能信号: output_enable. 所以代码其实很简单:
Assign birsignal = output_enable ? out: 1’bz;
Assign in = birsignal
这里有一个小小的提示,在写代码的时候突然不太清楚语法怎么写的时候,你可以在quartus里面按一下右键,你可以发现一个insert template…的选择。试试看吧。
状态机是设计过程中的核心部分,所以我们需要特别的提一下写状态机的一些注意事项。为了实现利益最大化,建议在FPGA中使用one hot 模式的状态机,而在CPLD中使用最少比特数的状态机。在具体的设计中需要注意的是:
1、把状态机写全,也就是说不要漏写了 Default:。没有这个首先会出现什么?对了,会有假门(latch)。
2、状态机作为控制核心部分,尽量把它和算法功能和数据分离开来。好像你看到好的流水线,控制流水线的电脑和流水线本身是分开的。这样可以保持相对的独立性。
3、如果一种操作设计到几个状态,尽量把操作剥离状态机本身。
4、使用一个简单的复位信号来定义上电状态。如果你的状态机会被比较多的复位信号复位的话,工具就不会把它当作状态机来对待。总之,尽量的保持状态机的很傻很单纯是很重要的。尽量的不要加重核心部分的复杂性。其实道理很简单,好比在一个公司里面,真正在工作的,其实一定不是一个这个公司的核心。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?我要注册
x
|