基于VerilogHDL的数字系统设计入门教程(CPLD篇)――第三天_第1页
基于VerilogHDL的数字系统设计入门教程(CPLD篇)――第三天_第2页
基于VerilogHDL的数字系统设计入门教程(CPLD篇)――第三天_第3页
基于VerilogHDL的数字系统设计入门教程(CPLD篇)――第三天_第4页
基于VerilogHDL的数字系统设计入门教程(CPLD篇)――第三天_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、        【线路人生】手把手系列入门教程    基于 Verilog HDL 的数字系统设计  入门教程(CPLD 篇)    第三天        www.5iFPGA.com    Version 1.0                    Copyright ©  线路人生|Circu

2、itry Life    基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天  版本修订记录  Version  1.0        Author  zhiyuh  Data  200985  Description  First draft.    www.5iFPGA.com   2   线路人生|Circuitry  基于 Ve

3、rilog HDL 的数字系统设计入门教程(CPLD 篇第三天  目录  1.  2.  3.  简介. 4  实验环境  . 4  . 轻触开关(按钮)原理 . 4  3.1  轻触开关(按钮)介绍 . 4  3.2  接口原理 . 5  3.3  实验扩展板上的独立式轻触开关原理图 . 6  实验一(基本输入输出) .

4、60;7  4.1  实验要求 . 7  4.2  实验目标 . 7  4.3  源代码  . 7  . 4.4  实验步骤 . 8  4.5  利用 RTL 电路图观察器 . 10  4.6  思考  . 11  . 实验二(基本逻辑门实验) . 11  5.1  实验要求 . 11&#

5、160; 5.2  实验目标 . 11  5.3  原理分析 . 11  5.4  实验步骤 . 12  5.5  思考  . 15  . 作业. 16  后记. 16  其它信息  . 16  . 4.  5.  6.  7.  8.            www.5

6、iFPGA.com   3   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天  1. 简介    希望通过今天的学习和实验,大家能掌握以下要点:  轻触开关(按键)的基本工作原理;  利用 RTL 电路图观察器观察电路结构;  基于原理图方式的 Quartus II 输入设计方法。  2. 实验环境  (1) 本实验的软件实验环境为:  操作系统:Windows XP

7、 +SP3;  EDA 软件:Quartus II 9.0 SP2。  (2) 硬件实验环境:  PN0903MAX II CPLD  启蒙板(主芯片 EMP570T100C5N) ;  PN0904EDA/MCU 扩展实验板;  PN0902Altera USB Blaster。  (3) 硬件连接方式    将 EDA/MCU 扩展实验板上的 8 个 LED 与 CPLD 对应的 IO 连接起来: 使用 40 线

8、的排线 将 MAX  II  CPLD 启蒙板上的插座 P1 与 EDA/MCU 扩展实验板上的插座 P1 相连(注意 1 脚要 对应) 。    将 EDA/MCU 扩展实验板上的 4 个轻触开关与 CPLD 对应的 IO 连接起来: 使用 40 线的 排线将 MAX  II  CPLD 启蒙板上的插座 P2 与 EDA/MCU 扩展实验板上的插座 P3 相连(注意 1 脚要对应) 。    或采用杜邦线连接的方法,使两个板的插座 P1 的 3340 脚对应连接(编号相同) ,插座 P2 的 2730

9、脚对应连接,P1 或 P2 任意的电源和地对应连接。  3. 轻触开关(按钮)原理  3.1 轻触开关(按钮)介绍    轻触开关(按钮)是一种常用的机械装置,其外形多种多样,我们常用的一些如下面的 图中所示:      使用时轻轻点按开关按钮就可使开关接通, 当松开手时开关既断开, 其内部结构是靠金  4   线路人生|Circuitry  www.5iFPGA.com  基于 基 Verilog H 的数字系 HDL 系统设计入门 门教程(CPLD 篇 篇第三

10、三天  属弹 弹片受力弹动 动来实现通断 断的。 微动开关 关由于体积小 小重量轻在很 很多方面得到 到广泛的应用 在 用, 电子 子设计方面更 更是必不可少 少的输入设备。 但这种开关 关也有它不足 足的地方, 频 频繁的按动会 会使金 属弹 弹片疲劳失去 去弹性而失效 因此现在很 效。 很多电器的按 按钮都使用导 导电橡胶来代 代替, 比如电脑键 盘,遥控器等。      轻触开关常 常见的有直插 插式和贴片式,按照外形大 大小又可以分 4X4、4.5X4.5、6X6、2X4 分为 等等 等。通常我们 们在电路原理 理图中会使用类似下面这样 样的元件

11、来代 代表轻触开关 关:      当按下开关 关后,左右的电路连同,而 而平时则处于 于关闭状态。我们可以看 看到,常用的一些 开关 关是四个脚,是不是内部 部有两路这样的开关呢?并 并不是这样的 的。如果我们 们手头有万用 用表, 可以 以用测通断的 的档来测试一 一下:      同侧的两个 个管脚之间是 是短路的,如上图的红色两 两个圈圈起来 来的脚(蓝色 色的也是一样 。 样) 所以 以在画 PCB 的 的时候,这两 两个脚连接任 任意一个都算是连接上了。 。为什么这么 么设计呢?我 我觉 得应 应该是从机械 械稳定性的角度

12、上考虑的,因为毕竟四 四个脚比两个 个脚的稳定性 性要好的多。  3.2 2 接口 口原理1    按键开关在 在嵌入式系统 统中能实现向单片机、CPL LD/FPGA 等输 输入数据、传 传送命令等功 功能, 是人 人对系统直接 接干预的一种 种主要手段。   按键开关根 根据上面的介 介绍,我们知道其实利用了机械触点的 的关合来输出 出相应的电信 信号。 一个 个电压信号通 通过按键开关 关机械触点的断开、闭合,其电压输出 出波形如下图 图所示(左图为原 理图 :  图) VCC 输入   图中 t1 和 t3 分别为闭 

13、0; 闭合和断开过程的抖动期(呈现一串负 负脉冲) 抖动的时间长短和 ,抖 开关 关的机械特性 性有关,一般 510ms,t2 为稳定的 般为 的闭合期,其 其时间由按键 键动作所决定,一 般为 为十分之几秒 秒到几秒,t0 和 t4 为断开 开期。    按键开关的 的闭合与否, 反应在输出电 反 电压上就是呈 呈现高电平或 或低电平, 如 如果高电平表示键 断开 开(如上图) ,低电平则表 , 表示键闭合,通过对电平 平高低状态的 的检测,便可 可以确认按键是否 按下 下。为确保接 接收端只确认 认一次按键有效 效,必须消除 除抖动期 t1 和 t3 所带来 来的影响,

14、具体的                                                  &#

15、160;            1   单 单片机原理及应 应用 ,张毅刚 刚主编,高等教 教育出版社  www w.5iFPGA.com m   5   线 线路人生|Circ cuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天  消除抖动的措施在后面实验中具体讲解。    常用的按键开关可以组成独立式的键盘接口和行列式键盘(矩阵键盘)接

16、口。今天教程 中我们只讲解独立式的键盘接口。    独立的式键盘就是多个按键开关的集合, 每个按键各接一根输入线, 通过检测输入线的 电平状态来判断是哪个开关按下了。  3.3 实验扩展板上的独立式轻触开关原理图    在 EDA/MCU 实验扩展板上,我们设计了 4 个独立的轻触开关,通过上拉电阻接到 CPLD 的相应管脚上,其原理如下图所示:  VCC R25 10K B1 R27 10K R29 10K R32 10K Button1 Button SMD B2 Button2 Button SMD B3 Button3 But

17、ton SMD B4 Button4 Button SMD     CPLD 只需要检测连接到该轻触开关的 IO 的电平即可获知其是否按下, 高电平代表断开, 低电平代表闭合。    按照本教程一开始介绍的连接方法,实验扩展板上的 LED、开关和 CPLD 的连接关系如 下表所示:  器件  D1  D2  D3  D4  D5  D6  D7  D8  B1  B2  www.5iFPGA.com  信号名  LE

18、D0  LED1  LED2  LED3  LED4  LED5  LED6  LED7  KEY0  KEY1   6   CPLD 启蒙板对应引脚  40  41  42  43  47  48  49  50  84  85  线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天&

19、#160; B3  B4  KEY2  KEY3  86  87  4. 实验一(基本输入输出)  4.1 实验要求    利用实验扩展板的 4 个轻触开关和 LED1LED4 实现,B1 按下点亮 LED1,B2 按下点亮  上 LED1LED2 两个灯,  B3 按下点亮 LED1LED3 三个灯,B4 按下点亮 LED1LED4 四个灯, 如果没有任何按键按下 LED 全部都保持熄灭状态。  4.2   实验目标  通过本实验,掌握板上轻触开关作为系

20、统参数和信号输入的使用方法。  4.3 源代码    LED 的原理图和第一天教程中的一样,这里不再重复,如果记不清楚的同学请翻看前面 的教程。    实验代码较为简单,我们使用 case 语句来实现这个功能:  1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. module BaseInOut(LED, KEY;     /模块名  input  3:0KEY;      &

21、#160;   /定义按键输入  output  3:0LED;         /定义输出口  reg    3:0LED;          /定义寄存器    always (KEY            /过程    begin      case(KEY    

22、;     /根据读取的按键值进行分支操作        4'b1110:LED = 4'b0001;/B1 按下,点亮 1 个灯        4'b1110:LED = 4'b0011;/B2 按下,点亮 2 个灯        4'b1110:LED = 4'b0111;/B3 按下,点亮 3 个灯      &#

23、160; 4'b1110:LED = 4'b1111;/B4 按下,点亮 4 个灯        default: LED = 4'b0000;  /无按键按下或多个按键同时按下      endcase    end  endmodule    在昨天的学习中,我们最后一个花式点灯的实验也使用了 case 语句。case 语句主要用 于多路分支,比 ifelseif 的形式更加便捷,而且使得

24、程序流程更加清晰。    case 语句使用关键字 case, endcase 和 default 来表示。 case 语句的每一条分支语句都可 以是一条语句(如本实验的源代码)或一组语句。多条语句需要使用关键字 begin 和 end 组 www.5iFPGA.com   7   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天  合为一个块语句。在执行时,首先是计算条件表达式(case 后面括号内的内容)的值,然后 按照顺序将它和各个候选项进行比

25、较。 如果等于某个候选项则执行对应的语句或块语句; 如 果全部候选项都不等,则执行 default 后的语句或块语句。    此在在使用时,还可以在候选项中使用带 x 和 z 的表达式,具体的应用可以参考相关书 籍。    下面给出周立功一本书上的类似代码,我修改之后和本实验的功能相同:  1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. module BaseInOut2(LED, KEY;    /模块名 

26、input  3:0KEY;          /定义按键输入  output  3:0LED;         /定义输出口  reg    3:0LED_r;          /定义寄存器  reg    3:0buffer;          /定义寄存器    assign

27、60;LED = LED_r;          /输出键值  always (KEY            /过程    begin      buffer = KEY;          /读键值      case(buffer        /根据读取

28、的按键值进行分支操作        4'b1110:LED_r = 4'b0001;/B1 按下,点亮 1 个灯        4'b1110:LED_r = 4'b0011;/B2 按下,点亮 2 个灯        4'b1110:LED_r = 4'b0111;/B3 按下,点亮 3 个灯        4'b111

29、0:LED_r = 4'b1111;/B4 按下,点亮 4 个灯        default: LED_r = 4'b0000;/无按键按下或多个按键同时按下      endcase    end  endmodule  4.4 实验步骤    (1)使用向导在“D:TutorialEPM570DAY03Exp01”目录下建立一个名为 BaseInOut 的项目;    (2)

30、建立相应的 Verilog HDL 文件,并输入实验代码,保存文件为 BaseInOut.v;    (3)编译项目;    (4)按照 3.3 中的管脚对应关系,将引脚锁定,重新编译项目;    (5) 建立仿真波形。 注意仿真波形文件中设置 KEY 信号的输入值时, 需要先选取一段, 然后双击或者是选择左侧快捷方式中的 ,在弹出的窗口的 Numeric or named value 的框 中输入相应的数值(我们想要仿真的按键输入值) ,注意上方的 Radix 的进制要和数对应。 

31、www.5iFPGA.com   8   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天      当然, 我们也可以将 KEY 设置成从 0000 到 1111 的顺序值: Name 栏下面的 KEY 信号 在 ,在弹出的窗口中填入 上右键,选择 Value >Counter Value 或者选择左侧快捷方式中的 条件(注意 End value 并不是 1111,是因为这个是到仿真结束的时间的值,中间经过了 0

32、000 到 1111 的多次变化) :      生成仿真网表,并进行功能仿真,仿真结果如下:  www.5iFPGA.com   9   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天      (6)下载到 CPLD 中,观察实验结果。    4.5 利用 RTL 电路图观察器    Quartus  II 可实现硬件描述语言或网表文件对应的 RTL 电路

33、图的生成。本实验中,我们 选择 Tool > Netlist Viewers >RTL Viewer 菜单, 或是双击 Tasks 窗口中 Analysis & Synthesis 中的 Netlist Viewers  下的 RTL Viewer,可以打开工程的电路结构:      通过 RTL 电路观察器查看本项目的结果如下图所示:    www.5iFPGA.com   10  

34、线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天    双击图形中的有关模块,或是选择左侧各项,可了解各层次的电路结构。对于比较复杂 的 RTL 电路,可以利用模块功能过滤器(Filter)来简化电路。右键单击目标模块,在弹出的 下拉菜单中选择 Filter > Source 或 Destinations,由此产生相应的简化电路。    从本实验的结果来看,整个电路是有 Decoder 和与门所构成。我们学数字电路课程的时 候是否也设计过这样的电路呢?如

35、果让我们用最基本的门电路来做, 是不是比我们用 Verilog  HDL 来写复杂的多?看来 EDA 工具和 Verilog  HDL 还是非常高效和方便的,为此,我们更应 该好好学习相关的知识,多动手来锻炼自己的能力。  4.6 思考    在 4.3 节中,我曾经给出了另外的一个实现代码,和本来的代码稍有区别。大家自己动 手新建一个项目,用此代码来实现实验的功能。然后通过仿真、RTL 电路查看器,比较一下 两种代码综合之后的结果有什么异同,哪种方式更好。  5. 实验二(基本逻辑门实验)  5.1 实验要求 

36、  利用板上的 B1 和 B2 两个按钮以及 LED 实现按下任意一个按钮或同时按下两个按钮, LED 都点亮的功能。  5.2   实验目标  通过本实验,掌握使用原理图方式进行设计的方法。  5.3   原理分析  分析需要实现的功能,其原理非常简单,按键按下即输入低电平(逻辑 0) ,点亮 LED 需要输出高电平(逻辑 1) ,输入和输出之间的关系为: F = A + B 。其原理如图所示:  NOT KEY 0 INPUT VCC inst1 NOT OR2 OUTPUT LED KEY 1 INPUT V

37、CC     两个按键开关输入通过非门连接到或门的输入端,LED 接到此非门的输出端。    如果使用 Verilog  HDL 来实现此功能,非常简单,可以采用 or 门原语来实现门级建模, 源代码如下:    1. 2. 3. module KeyAndLED(LED, KEY;  input  1:0KEY;        output  LED;           &

38、#160;   /模块名  /定义按键输入  /定义输出口   11   线路人生|Circuitry  inst2 inst www.5iFPGA.com  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天  4. 5. 6. 7. wire   1:0KEY_N;          not  NotGate1:0(KEY_N, KEY;    or&

39、#160;   OrGate(LED, KEY0, KEY1;    endmodule  /定义内部连线  /非门实例引用  /或门实例引用    程序中 NotGate1:0(KEY_N,  KEY;是采用实例数组的方式来进行实力引用,相当于下面 两条语句:  not  NotGate0(KEY_N0, KEY0;  not  NotGate1(KEY_N1, KEY1;  NotGate(KEY_N, 

40、;KEY;    当然,也可以通过逻辑运算符来实现:  1. 2. 3. 4. 5. module KeyAndLED(LED, KEY;    input  1:0KEY;          output  LED;           assign  LED = KEY0|KEY1?1:0;  endmodule  /模块名  /定义

41、按键输入  /定义输出口  /利用条件操作符实现输出    本实验原理非常简单,利用 Verilog  HDL 设计并没有太多难度,而我们主要的目的为了 教会大家使用原理图进行设计的方法,请跟着后面的实验步骤,来熟悉一下相关的操作。  5.4 实验步骤    (1)利用新项目向导在“D:TutorialEPM570DAY03Exp02”目录下建立一个名为 “KeyAndLED”的项目,选择好相应的 CPLD 器件。    (2)新建一个 Block Diagram/Schematic&

42、#160;File 型文件:      建立好的文件窗口和我们使用源代码方式进行设计稍有不同:   12   www.5iFPGA.com  线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天        (2)在原理图中加入逻辑门和引脚:  在原理图文件的空白处右键,选择 Insert > Symbol 菜单,或是双击原理图空白处,或是 图标:  点击左

43、侧快捷方式栏中的     弹出的 Symbol 窗口中,我们选择安装目录/libraries > primitives > logic  下的 or2,如图 所示:  www.5iFPGA.com   13   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天      点击 OK,原理图文件上就放置好了一个或门:      基本

44、的逻辑门都在安装目录/libraries > primitives > logic 下面,名称比较容易识别,后面 的数字一般是输入的端口数。    接下来我们用同样的办法加入两个非门。 在点击 OK 之前, 可以勾选 Repeatinsert mode, 就可以连续的加入非门“not” ,而不用每次都弹出 symbol 窗口了。如果要中止继续加入相 同的逻辑门,可以点击鼠标右键,在弹出的菜单中选择 Cancel。    加入两个非门之后, 我们用同样的方法, 在安装目录/libraries&#

45、160;> primitives > pin 下的 input (2 个)和 output 引脚。加入后双击引脚,将输入引脚分别命名为 KEY0和 KEY1,输出引 脚命名为 LED,完成后的原理图如下所示:  www.5iFPGA.com   14   线路人生|Circuitry  基于 Verilog HDL 的数字系统设计入门教程(CPLD 篇第三天      接下来, 我们使用连线工具将各部分按照我们的设计原理连接起来。 点击 既可将我 们想要连接的端口连接起来,但是如果我们移动图中的元件,连线不会跟着移动,这样就又 需要重新连接了。我们可以将 (rubberbanding)按下去使之处于激活状态,这样我们 移动元件连线也会跟着动了。连接好的原理图如下图所示:  此外,还有一个更加简便的办法,如果图中的原件比较少的话可以使用。我们移动 LED 这个输出引脚,将 LED 和 OR2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论