QuartusII 可实现硬件描述语言或网表文件 (VHDL、Verilog、BDF、TDF、EDIF、VQM) 对应 的RTL电路图的生成, 其操作方法: 选中Tools→ Netlist Viewers项, 在出现的下拉菜单中选择 “RTL Viewer HDL”项。选择 RTL Viewer, 可以打开工程的RTL电路图。双击图形中有关模块, 或选择左侧各项,可逐层了解各层次的电路结构。
图1.9 CNT10的RTL电路图
对于较复杂的RTL电路,可利用功能过滤器Filter Destinations,由此产生相应的简化电路。 五、 引脚锁定设置和下载文件生成
为了能对10进制计数器进行硬件测试,应将其输入、输出信号锁定在芯片确定的引脚上,编译后生成的下载文件中就含有引脚锁定设置信息。引脚锁定:
1 打开需下载的工程项目管理器,并打开该工程项目管理器中已设计好的工程文件; 2 选择Assignment菜单中的Assignment Editor项,进入Assignment Editor编辑窗口。
在Category栏中选择Pin,或直接单击右上侧的Pin按钮(见);
3 双击TO栏的《new》,在出现的下拉栏中分别选择本工程要锁定的端口信号名;然后
双击对应的Location栏的《new》,在出现的下拉菜单栏中选择对应端口信号名的器件引脚号(按图1.10设置)。
4 最后点击File→Save存储这些引脚锁定的信息,并且启动Start Compilation再编译一
次,才能将引脚锁定信息编译进编程下载文件CNT10.sof中。
图1.10 Assignment Editor编辑器及引脚锁定对话框
图1.10 六、配置文件配置下载至FPGA中,并进行硬件测试
将编译产生的SOF格式配置文件配置进FPGA中,并进行硬件测试的步骤如下: 1 打开编程窗口和配置文件。首先将实验系统和并口通信线连好,打开电源。
在菜单Tool中选择Programmer项,在弹出的编程窗口(见图1.11)的Mode栏中选择:选JTAG();单击左侧Add File按钮,手动选择扩展名为CNT10.sof的配置文件(d:\\EDA\\cnt10b \\cnt10.sof)。并选中下载文件右侧的第一小方框(在该框内打钩)。
图1.11 选择编程下载文件
2 选择编程器
点击Tool→Programmer后,窗口第一行的第二项(见图1.11)显示ByteBlasterMV[LPT1]。 3 设置编程器 若是初次安装的QuartusII,在编程前必须进行编程器选择操作。
Hardware Setup可设置下载接口方式,这里选择Byte BlasterMV[LPT1]。方法:单击编程窗左上角的Hardware Setup按钮(见图1.11),即弹出Hardware Setup 对话框(见图1.12);选择此框的Hardware settings页,双击此页中的选项ByteBlasterMV或ByteBlasterII,再单击Close按钮,关闭对话框即可。
图1.12 加入编程下载方式 图1.13 双击选中的编程方式
如果打开图1.12所示的窗口,在Currently selected hardware 栏显示No Hardware,则必须加入下载方式。即单击 Add Hardware 按钮,在弹出的窗口中单击OK,再在图1.3所示的窗口双击 ByteBlasterMV,使Currently selected hardware栏显示ByteBlasterMV[LP1]。
4 十芯编程线一端接EDA实验箱适配板上的JTAG插口, 另一端接实验箱主板上的ByteBlasterMV口。 5 文件下载
检查以上连接无误后, 单击下载标符Start按钮,即进入对目标器件下载操作。当Progress显示出100%,以及在底部的处理栏中出现“Configuration Succeeded”时,表示编程成功。 5 硬件测试,
实验系统GW48-PK2TM选择电路模式No.7,10进制计数器的时钟CLK接键1(单脉冲输入键),Q0~Q7顺序接发光二极管D8~D1。测试初始状态D8亮D7~D1暗,键1每按一次亮管顺序右移一位,周而复始直至回到初始态。
六、完成了上述实验步骤后,有时间的同学设计一个4选1选择器,并下载到实验箱上验证。 [实验报告要求]
1总结Quartus II 6.0的文本文件设计流程(包括编辑、编译综合、仿真、引脚锁定、下载文件生成、下载及硬件测试)。
2 将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。 思考:1、本设计中复位功能的实现是否依赖时钟信号?
2、在设计中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即: CQ <= CQ + 1?为什么? [参考设计文本描述]
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS
PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT10;
ARCHITECTURE behav OF CNT10 IS BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF EN = '1' THEN --检测是否允许计数(同步使能)
IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零 END IF; END IF; END IF;
IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF;
CQ <= CQI; --将计数值向端口输出 END PROCESS;
END behav;