之前一直是写一个文件的工程测试用,现在需要将之前写的一些文件放一起,作为多个模块,就需要有个层次设计的概念。
今晚研究了一番,大概有两种方法。综合文件法和原理图方法。
常用的是写个综合文件的方法,写个sys模块将所有模块文件放一起,通过模块调用的方法。注意也需要声明input和output,还有某些共享线也要声明,一般声明为output吧,因为你模块调用的语法需要用到“.之前端口名(现在端口名)”的语法。
需要注意的是,顶层文件的实体entity是必须和工程名字一样的,不然联合modelsim仿真会没有loading。因此如果要设计一个大工程,最好事先想好有几个模块。书上说的自顶而下大概就是这个意思吧。不过我的打算是先把各个模块的文件先分别建工程写好,仿真过了,最后再建个总工程,写个顶层文件,把所有文件再包括进去。这是自底而上的设计方法。
第二种方法是原理图方法,在书上看过就也试了一下。它是把各个文件写好,然后分别在文件那里右击,选择create symbol files,再新建个block/diagram文件,把模块拖进去,连线,还要记得添加input和output(是在primitive那里)。保存为bdf文件,记住文件名是工程名。
后来要modelsim仿真,发现没现象。百度了一下是说,原理图只能用之前几个quartus内置的仿真器仿真,因为modelsim不认识bdf是个神马东东。所以,我只能在file选项那里update/create HDL file,这样就能生成modelsim所认识的.v文件了。这个翻译的功能还是觉得很牛的。翻译出来的就和自己写个综合文件一样,把各个模块调用了进来。
感觉原理图方法,要仿真的话归根到底还是写综合文件。如果模块比较多可以用它的翻译功能,但最好还是自己写吧,条理自己也清晰点。