Situation: 在对FPGA设计进行最初步的系统规划的时候,需要进行模块划分,模块接口定义等工作。通常,我们只能在纸上进行设计。虽然在纸上我们可以很随意地书写,而用纸画的不方便就在于,如果对某一个模块进行较大改动,那么常常因为留出的空余纸张不够,而导致拿一张新的白纸重新画一遍。
Question: 我们能不能使用软件进行系统规划呢?
Solution: 答案是可以的。下面以ISE 7.1为例作说明:
1) 画一个空模块,仅定义端口 - 新建Schematic,选择Tools -> Symbol Wizard,里面可以定义Symbol名和端口属性。完成后生成sym格式的Symbol。
2) 将Symbol添加到原理图 - 在Schematic的Symbol页面,选择Categories为工程文件夹,在Symbols列表中就可以看到刚刚新建的Symbol。将它添加到原理图中。
3) 重复1-2步骤,建立所有Symbol,并连接端口。
4) 如需修改Symbol,可以直接在sym文件中修改 - 可以按右键-> Add -> Pin等等添加,也可以Copy已存在的Pin,然后改变PinName。但是在ISE7.1中改变Copy过来的PinName会连带将原始PinName也改变。解决方法是用TextEditor比如UltraEditor打开这个sym文件,在里面修改。sym文件格式很易懂。改变Symbol端口后需要Update Schematic。在点到Schematic后会自动弹出Update对话框。
5) 生成原理图对应的HDL文件 - 点击"Sources in Project"列表中的sch文件,在"Process"窗口选择"View HDL Functional Model"。这样会自动生成Schematic对应的HDL文件,其中例化了上面的各个模块。要改变HDL文件类型,可以改变Project属性中的"Generated Simulation Language"属性。
6) 生成Symbol对应的HDL文件 - 在打开一个sym文件时,选择Tools -> Generate HDL Template from Symbol。此时可以选择生成VHDL还是Verilog的文件。
7) 对每个模块的内容进行编写。
Summary: 虽然我个人偏好使用HDL进行设计,但是在设计初期使用这种Schematic方法进行自顶向下的设计真的十分方便。首先它增强了设计的可维护性和可读性,使修改和传播都更为方便;其次由于它可以自动生成HDL代码,这样对下一步的设计也起到了简化操作的作用。
Advice:在使用过程中碰到的几个问题希望以后Xilinx能解决
1) 在编辑Symbol时改变复制后的PinName会同时改变原始PinName
2) Symbol Wizard只能添加Pin,不能添加Bus Symbol Wizard可以添加bus,只要给Pin命名A(4:0)就可以
3) 只能在Pereference里改颜色,而不能改变某一特定连线的颜色,以起到区分控制线/数据通路的作用 |