Verilog-HDL与CPLD/FPGA设计应用讲座
第 6讲 用Verilog-HDL做CPLD设计
目标板的设计和下载软件的使用
6.1 目标板的制作
6.2 一个最简单的设计
6.3 一个最简单设计的实现--下载实例
6.1 目标板的制作
学习了Verilog-HDL的基本概念,并用其仿真环境Modelsim XE对基本逻辑电路进行仿真后,如果希望在硬件上实现所设计的电路功能,就需要有一块目标板。
(1)进行目标板的设计,画出电路图。
这里,采用Xilinx公司的XC9536。任何一个逻辑电路都有输入和输出,在功能尽可能多、设计尽可能简单的前提下,这里采用了8位开关输入、2 位按键输入(其中的1位作为复位键)、1位可以通过示波器观察的输出和8位LED输出。而在设计时序逻辑电路时,脉冲是必须的,因此,加入一个时钟源。其次,为了使电路板动作,还要有电源端VCC和地端GND。
另外,为了使得目标板具有实用性和可扩展性,需要在设计上考虑加入一些用于扩展的端子。例如:也许日后的电路实验中要用信号发生器作为输入,这样,就需要在电路设计时,把8个输入端引出作为可扩展的端子。
这样,一个用于学习的目标板就构建成了。图1示出了目标板的电路图。
图1 中,XC9536的I0-I7为8个输入端,通过开关S1输入;KEY和/RST是按键输入端,/RST用于复位;CLK为时钟脉冲的输入端;D0-D7 是8个输出端,通过LED显示输出;PULSE_OUT也是输出端,用于输出脉冲;CLK是一个10M的时钟源。图中的左下方,从左向右依次示出了:电源端VCC和地端GND部分;滤波电路;电源显示;扩展电路部分。
(2)根据电路图制作目标板
目标板的电路图设计完成后,就可以制作目标板了。为了使得目标板的成本低、面积小,可以采用表贴元件进行表面安装,这种技术利用手工是完全可以实现的。图2是最终安装完成的目标板照片。
当然,XC9536芯片的写入还需要有下载电缆,它包括电缆线本身和下载接口两部分。考虑到目标板的面积,所以,在设计中并未加入下载接口,而是另外采用写入器进行写入。
这样,实验的硬件环境就构筑完成了。实验的软件环境需要WebPACK Project Navigatorebpack软件,可以从Xilinx公司的网址http://www.xinlinx-china免费下载第5版。
有了目标板、下载电缆和下载软件,就可以随心所欲地实现各种逻辑电路的设计了。
6.2 一个最简单的设计
首先,用目标板来做一个最简单的设计:用一个开关直接控制一个灯。期望达到下述要求:当开关拨到低电平时,灯亮;反之,灯灭。
为了达到上述要求,需要设计出其逻辑功能框图,如图3所示。
其中,S1_1表示开关,作为输入;LED0表示发光二级管,作为输出;34和44为上述变量对应芯片XC9536的引脚。虚线框中的部分是CPLD设计,这里,用一个缓存器,即可实现一个开关直接控制一个灯的目的。
根据图3,可以对该电路进行Verilog-HDL描述。
/* 一个开关直接控制一个灯的Verilog-HDL描述*/
module S1_D1 ( S1_1, LED0 ); // 模块名及端口定义,范围至endmodule
input S1_1; // 输入端口定义,对应XC9536的第34脚
output LED 0; // 输出端口定义,对应XC9536的第44脚
assign LED0= S1_1; // assign语句,实现把S1_1赋值给LED0的功能
endmodule // 模块结束
用Verilog-HDL仿真软件Xilinx WePACK 4.1ModelSim XE Starter进行仿真后,仿真结果如图4所示。从图中可以得出当开关S1_1是低电平时,灯LED0即被点亮。
图4 一个开关点亮一个灯的仿真结果
6.3 一个最简单设计的实现--下载实例
通过图4可以观察到,我们已经用Verilog-HDL描述达到了一个开关直接控制一个灯的期望。当然,下一步就希望在目标板上看到这个结果了。那就需要把描述下载到目标板上,让目标板动作起来吧!
下面,我们利用这个例子,简要说明Webpack Project Navigator软件的操作过程。其详细的操作过程,读者可参阅笔者的网站。
(1) Webpack Project Navigator图标。其图标如图5所示。
图5 Webpack Project Navigator图标
(2)准备源文件。如图6所示,确定源文件的所在位置。其中,S1_D1是用于生成目标代码的源文件,而S1_D1_TEST.tst是用于测试的文件,只用于仿真,不用于下载。
图6 准备源文件
此后,启动Webpack Project Navigator,建立新的工程文件,进行相应的操作。
(3) 进入编译器画面。编译器画面如图7所示。
(4)加载源文件。在图7中,首先,选中【xc9536-7pc44-XST Verilog】项;然后,单击鼠标右键,在弹出的选项卡中单击【Add Source…】项。在出现的对话框中,选择源文件S1_D1后,单击【打开】。
(5)新建引脚配置文件。如图8所示,首先,选中【xc9536-7pc44-XST Verilog】项;然后,单击鼠标右键,在弹出的选项卡中单击【New Source…】项,即出现如图9所示的对话框。
图8 新建引脚配置文件
在图9中,选中【Implementation Constraints File】项,并在【File】项中输入引脚配置文件的名称,在【Location】栏中选择引脚配置文件的定位。然后单击【下一步】,进行关联模块的选择即可。
图9 新建引脚配置文件对话框
(6)启动引脚配置连接项,并进行配置。如图10所示,从【User Constraints】处,双击【Create Timing Constraints】项,即可启动引脚配置连接项。
图10 启动引脚配置连接项
配置引脚连接在图11所示的画面中完成。在【Ports】页中,【Location】处输入图3中所示的引脚。例如:LED0被定为XC9536的第44脚,故在LED0一行输入p44,其他类推。Webpack Project Navigator就是这样将Verilog-HDL与硬件联系在一起的。配置完成后,从【File】中选择【Save】存盘,再选择【Exit】退出。
图11 配置引脚连接
(7)编译和布线。双击如图12所示的【Implement Design】项,如果出现对号,即可认为编译成功。注意:一定要选中源文件的主模块部分,由于该实例中只有一个模块,所以"S1_D1"即为源文件的主模块。如果选中子模块,将不能进行完整的编译。
(8)生成目标文件。双击图12中的【Generate Programming File】项。
(9)启动JTAG编程器。如图13所示,双击【Configure Device (iMPACT)】项。
(10)下载配置。图14为操作模式选择画面,选择【Configure Device】项,进行设备配置。
图14 操作模式选择画面
图15就是配置设备画面,选择【Boundary-Scan Mode】项,将设备配置成二进制总线模式。
图16是进一步对二进制总线模式进行选择,选中【Automatically connect to cable and identify Boundary-Scan chain】项,表明自动连接电缆,并检验二进制总线链。
(11)装载新的下载配置文件。如图17所示,选中新的下载配置文件"S1_D1.jed",然后单击【打开】。
(12)连接JTAG电缆。出现图18所示的画面后,单击标有"XILINX"字样的图标,使其变黑。这表示选中了XC9536芯片。
(13)编程。在图18中,选中【Operations】项,从其下拉菜单中选择【Program…】项,即出现编程配置选项卡,其中的选项可以根据需要自行决定。注意:在此之前,一定要将硬件系统连接好,接通目标板的电源,否则将不能进行正常的工作。
如果编程顺利完成,就会出现如图19所示的画面。
至此,XC9536就成为具有一个开关直接控制一个灯的功能的芯片了。把芯片插在目标板上,就可以看到我们期望的现象了。
参考书
(1) John M. Yarbrough著,李书浩等译:数字逻辑应用与设计, 机械工业出版社,北京,2000.4.
(2) 常晓明:Verilog-HDL实践与应用系统设计,北京航空航天大学出版社, 2003.1.
文章评论(0条评论)
登录后参与讨论