在FPGA EDA综合工具中,Quartus II的图形设计界面是非常友好的,无论是早期MAX+PLUSS II还是现在的Quartus Prime Lite版本始终保留了非常好的图形设计界面用户体验也非常好,目前Intel公司接手Altera后继续维护这个功能,而且有所加强。而自顶向下的设计方法在Quartus的图形输入的的支持下更是特点突出,首先由于图形的支持,整个设计从上到下非常清晰;其次便于支持清晰的设计文档。下面还是以8位全加器为例介绍图形设计输入的自顶向下的设计方法。
- 新建工程
- 工程名 tdfadd8(td–top down)
- 顶层实体名称 tdfadd8
- 顶层实体文件 tdfadd8.bdf
- 设计顶层文件
- 新建文件,文件类型为block design file (*.bdf),
- 工具栏介绍
- 为了方便输入,先介绍工具栏将会使用的工具,如图1,
图1
-
- 注释文本:在图形设计界面添加注释说明,但不能作为网络标号使用。
- 输入器件:选择后打开器件输入对话框,如上节内容可以添加逻辑器件以及底层设计形成的符号等。
- 输入输出:选择后打开器件输入对话框,如上节内容可以添加输入、输出及双向口等。
- 块: 在图形编辑界面中,块是设计内容的载体。在自顶向下的设计中是主要底层设计内容的承载者。
- 垂直结点工具:主要用来实现器件之间的水平或垂直连线。
- 垂直总线工具:用来画总线,如果总线需要分支,应用net字符实现,见上节内容
- 管道工具:用来实现块与输入、输出之间的连接。
图2
- 右键单击块,选中Properties,如图3
图3
- 单击Properties 后,弹出图4对话框。在图4的对话框中有4个标签,分别为General, I/Os, Parameter ,Format.
-
- General(通用),可以block(块)的名称和例化名称,如图4中,块名为tdfadd4,例化名为inst。切换到I/Os标签进行设置。
图4
-
- 在I/Os标签对应的对话框中,编辑输入、输出如图5, 完成后切换到Parameter标签。
图5
-
- 在图6中编辑Parameters,编辑完成后切换到Format标签。
- name–> WIDTH,
- Value–>4,
- Type–>Unsigned Integer ,
- Description–> used for defining vector width
图6
- 在Format标签中,主要用来设置块的颜色属性,如填充色,线的颜色,文本的颜色等,如图7。 设置完成后点击OK按钮,返回图形编辑界面。此时可以看到在块的右上角出现了Parameters的编辑框。
图7
- 复制刚才编辑的块,粘贴形成两个编辑编辑快。在图形编辑界面添加输入、输出,并用管道(conduit)将输入、输出与块连接在一起。如图8.
图8
- 编辑块与管道映射
如图8中,在框内的输入脚a[WIDTH-1..0], 如果WIDTH=4, 就变成a[3..0],那么如何与外部的a[7..4]对应起来的呢?这就要用到管道映射。
块与管道映射,实际就是将外部的输入、输出端口与块(block)内部的输入、输出映射(mapping)起来。双击图9红框内的左右箭头编辑映射。
图9
双击图9后在弹出的对话框内编辑管道映射,如图10
图10
- 在General标签的对话框内,Type: 选择input。
- 在Mapping对话框中I/O on Block 选择ci,在Signal on conduit内选择ci(输入端口的名称与conduit的网络名称相同),如图11。mapping中a[7..4]如何映射的呢?
- 双击a[7..4]对应的Mapping对话框,如图12
图11
在图12对话框中,a[WIDTH-1..0] 与a[7..4] 映射。
图12
- 按照上面介绍的方法,修改所有的输入、输出(管道)与block内的I/O进行映射,完成后的界面如图13,
图13
- 创建底层实体文件
从图13可以看出,顶层文件8位全加器已经设计完成,有两个4位全加器级联而成,4位全加器的接口也定义和映射完成。但底层的实体文件如何处理?看如下步骤。
- 鼠标右键点击块(两个block中的任意一个,如图14,选择Create Design File from Selected Block…,打开图15对话框。
图14
在图15的对话框中可以选择4种类型,这里我们选择Verilog,文件名保持和block的名称一致,这里为tdfadd4.v。点击OK,就会打开底层文件(由Quartus II 自动生成),如图16,
图15
从图16可以看出,Quartus已经帮助我们完成基本结构和输入输出端口,惟一不足的是Verilog版本不是2001版的。
图16
- 修改源文件实现4位全加器的功能,并存储。
module tdfadd4 ( // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE! ci, a, b, sum, co // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE! ); // Port Declaration // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! parameter WIDTH = "4"; input ci; input [WIDTH-1:0] a; input [WIDTH-1:0] b; output [WIDTH-1:0] sum; output co; // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! assign {co, sum} = a + b + ci; endmodule
- 将顶层文件存储为tdfadd8.bdf,编译,评估。
- 写出testbench文件,进行设计测试。如果在modelsim下仿真一定要将tdfadd8.bdf转成tdfadd8.v.
练习:
- 在图15中选择Schematic, 用图形输入法完成底层文件设计。
- 完成激励仿真文件设计,完成仿真。