原创 用Verilog-HDL做CPLD设计(目标板的设计和下载软件的使用)

2009-7-18 11:53 2737 8 8 分类: FPGA/CPLD

用Verilog-HDL做CPLD设计(目标板的设计和下载软件的使用)
















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 目标板的电路图


  图1 中,XC9536的I0-I7为8个输入端,通过开关S1输入;KEY和/RST是按键输入端,/RST用于复位;CLK为时钟脉冲的输入端;D0-D7 是8个输出端,通过LED显示输出;PULSE_OUT也是输出端,用于输出脉冲;CLK是一个10M的时钟源。图中的左下方,从左向右依次示出了:电源端VCC和地端GND部分;滤波电路;电源显示;扩展电路部分。


  (2)根据电路图制作目标板
目标板的电路图设计完成后,就可以制作目标板了。为了使得目标板的成本低、面积小,可以采用表贴元件进行表面安装,这种技术利用手工是完全可以实现的。图2是最终安装完成的目标板照片。


  
      图2 目标板的照片


  当然,XC9536芯片的写入还需要有下载电缆,它包括电缆线本身和下载接口两部分。考虑到目标板的面积,所以,在设计中并未加入下载接口,而是另外采用写入器进行写入。
  这样,实验的硬件环境就构筑完成了。实验的软件环境需要WebPACK Project Navigatorebpack软件,可以从Xilinx公司的网址http://www.xinlinx-china免费下载第5版。
  有了目标板、下载电缆和下载软件,就可以随心所欲地实现各种逻辑电路的设计了。



6.2 一个最简单的设计
  首先,用目标板来做一个最简单的设计:用一个开关直接控制一个灯。期望达到下述要求:当开关拨到低电平时,灯亮;反之,灯灭。
  为了达到上述要求,需要设计出其逻辑功能框图,如图3所示。


点击看大图 
                                    图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所示。


 
                               图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"即为源文件的主模块。如果选中子模块,将不能进行完整的编译。


  
                图12 编译和布线


  (8)生成目标文件。双击图12中的【Generate Programming File】项。
  (9)启动JTAG编程器。如图13所示,双击【Configure Device (iMPACT)】项。


  
 
          图13 启动JTAG编程器


  (10)下载配置。图14为操作模式选择画面,选择【Configure Device】项,进行设备配置。
           
  
            图14 操作模式选择画面


  图15就是配置设备画面,选择【Boundary-Scan Mode】项,将设备配置成二进制总线模式。


 
 
             图15 配置设备画面


  图16是进一步对二进制总线模式进行选择,选中【Automatically connect to cable and identify Boundary-Scan chain】项,表明自动连接电缆,并检验二进制总线链。


 
 
           图16 二进制总线模式选择画面


  (11)装载新的下载配置文件。如图17所示,选中新的下载配置文件"S1_D1.jed",然后单击【打开】。


 
           图17 装载新的下载配置文件


  (12)连接JTAG电缆。出现图18所示的画面后,单击标有"XILINX"字样的图标,使其变黑。这表示选中了XC9536芯片。


  
             图18 连接JTAG电缆


  (13)编程。在图18中,选中【Operations】项,从其下拉菜单中选择【Program…】项,即出现编程配置选项卡,其中的选项可以根据需要自行决定。注意:在此之前,一定要将硬件系统连接好,接通目标板的电源,否则将不能进行正常的工作。


  如果编程顺利完成,就会出现如图19所示的画面。


点击看大图 
 
                    图19 编程顺利结束


  至此,XC9536就成为具有一个开关直接控制一个灯的功能的芯片了。把芯片插在目标板上,就可以看到我们期望的现象了。
参考书
(1) John M. Yarbrough著,李书浩等译:数字逻辑应用与设计, 机械工业出版社,北京,2000.4.
(2) 常晓明:Verilog-HDL实践与应用系统设计,北京航空航天大学出版社, 2003.1.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条