基于Verilog HDL的数字系统设计入门教程(CPLD篇)——第四天

基于Verilog HDL的数字系统设计入门教程(CPLD篇)——第四天
基于Verilog HDL的数字系统设计入门教程(CPLD篇)——第四天

?

【线路人生】手把手系列入门教程?
基于 Verilog?HDL 的数字系统设计 入门教程(CPLD 篇) 第四天

https://www.360docs.net/doc/e0813439.html,?
Version?1.0 Copyright?? 线路人生|Circuitry?Life

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 版本修订记录 Version 1.0 Author zhiyuh Data 2009‐8‐16 Description First?draft.?
?
https://www.360docs.net/doc/e0813439.html,?
~?2?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
目录?
1. 2. 3. 简介...........................................................................................................................................?4 实验环境 ..................................................................................................................................?4 . 实验一(按键消抖实验)?.......................................................................................................?5 3.1 按键消抖原理?...............................................................................................................?5 3.2 实验要求?.......................................................................................................................?5 3.3 实验目标?.......................................................................................................................?5 3.4 原理分析和设计思路?...................................................................................................?6 3.5 源代码 ..........................................................................................................................?6 . 3.6 实验步骤?.......................................................................................................................?8 3.7 小结 ............................................................................................................................?11 . 3.8 思考和练习?.................................................................................................................?11 拨码开关(按钮)原理?.........................................................................................................?11 4.1 轻触开关(按钮)介绍?.............................................................................................?11 4.2 实验扩展板上的独立式轻触开关原理图?.................................................................?12 实验二(拨码开关的使用)?.................................................................................................?13 5.1 实验要求?.....................................................................................................................?13 5.2 实验目标?.....................................................................................................................?13 5.3 源代码 ........................................................................................................................?13 . 5.4 实验步骤?.....................................................................................................................?14 5.5 小结 ............................................................................................................................?15 . 5.6 练习 ............................................................................................................................?15 . 后记.........................................................................................................................................?16 其它信息 ................................................................................................................................?16 .
4.?
5.?
6. 7.
?
https://www.360docs.net/doc/e0813439.html,?
~?3?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
1. 简介?
希望通过今天的学习和实验,大家能掌握以下要点: 按键消抖原理及应用; 拨码开关的基本工作原理; 基于原理图、 源代码和使用 MegaWizard 定制宏模块进行联合设计输入的 Quartus?II 设计方法; 学会利用 qsf 文件来锁定引脚和对项目进行设置。?
2. 实验环境?
(1) 本实验的软件实验环境为: 操作系统:Windows?XP?+SP3; EDA 软件:Quartus?II?9.0?SP2。 (2) 硬件实验环境: [PN09‐03]MAX?II?CPLD 启蒙板(主芯片 EMP570T100C5N) ; [PN09‐04]EDA/MCU 扩展实验板; [PN09‐02]Altera?USB?Blaster。 (3) 硬件连接方式 1)将 EDA/MCU 扩展实验板上的 8 个 LED 与 CPLD 对应的 IO 连接起来: 使用 40 线的 排线将 MAX II CPLD 启蒙板上的插座 P1 与 EDA/MCU 扩展实验板上的插座 P1 相连(注意 1 脚要对应) 。 将 EDA/MCU 扩展实验板上的 4 个轻触开关与 CPLD 对应的 IO 连接起来:?使用 40 线的 排线将 MAX II CPLD 启蒙板上的插座 P2 与 EDA/MCU 扩展实验板上的插座 P3 相连(注意 1 脚要对应) 。 或采用杜邦线连接的方法,使两个板的插座 P1 的 33‐40 脚对应连接(编号相同) ,插座 P2 的 27‐30 脚对应连接,P1 或 P2 任意的电源和地对应连接。 2)第二部分拨码开关的实验需要连接的引脚: 将 EDA/MCU 扩展实验板上的拨码开关对应的四个脚与 CPLD 对应的 IO 连接起来:?如 果使用排线上面已经将两个板的 P2 对应连接了。如果采用杜邦线的连接方法,使两个板的 插座 P2 的 23‐26 脚对应连接,P1 或 P2 任意的电源和地对应连接。 将 EDA/MCU 扩展实验板上的 8 个 LED 与 CPLD 对应的 IO 连接起来:?使用 40 线的排线 将 MAX II CPLD 启蒙板上的插座 P1 与 EDA/MCU 扩展实验板上的插座 P1 相连(注意 1 脚要 对应) 。?
https://www.360docs.net/doc/e0813439.html,?
~?4?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
3. 实验一(按键消抖实验)?
3.1 按键消抖原理?
昨天我们的按键原理部分讲过,一个电压信号通过按键开关机械触点的断开、闭合,机 械开关由于其机械特性, 触点的弹性和电压突跳等原因, 在触点闭合和开启的瞬间会出现电 压抖动,其电压输出波形如下图所示:?
VCC
输入
图中 t1 和 t3 分别为闭合和断开过程的抖动期(呈现一串负脉冲) ,抖动的时间长短和 开关的机械特性有关,一般为 5~10ms,t2 为稳定的闭合期,其时间由按键动作所决定,一 般为十分之几秒到几秒,t0 和 t4 为断开期。 在实际应用中如果不进行处理将造成误触发: 比如我们用按键进行计数, 在一个闭合过 程内可能会触发好几次,这样本来应该计数 1 的结果变成了 2、3 甚至其他更大的值。 常用的消抖方法有软件消抖和硬件消抖。 硬件消抖是增加消抖电路或专用芯片。 以能用 “软”就用“软”的思想,下面我们主要讲解软件消抖的原理和思想。 消抖的关键在于得到稳定的低电平信号,滤掉 t1 和 t3 阶段的抖动毛刺。通常采用三次 采样,如果均采样到低电平,则认为该按键已经按下;如果不满足连续三次都是低电平,我 们则将其忽略。 编程思想: 在第一次检测到有按键按下时, 对应的电压如果为电平, 则延时一段时间 (通 常为 10ms) 再次检测该电压, ; 如果仍为低电平, 则认为按下了, 就可以执行相应的操作 (反 之则认为按键没按下) 。当按键松开时,检测到高电平,则延时 10ms;再检测该电压,如果 仍为高电平,则认为按键松开,然后执行相应的操作(反之认为按键没松开) 。?
3.2
实验要求?
利用板上的 B1 按钮以及 8 个 LED 实现:每按下一次 B1 按钮,LED 多点亮一个,到点亮 8 个之后再按下 B1 变成一个 LED 点亮并如此循环;按钮需要用软件的办法消除抖动。?
3.3
实验目标?
通过本实验,掌握按键消抖的原理和编程思想,并学会基于原理图、源代码和使用 MegaWizard 定制宏模块进行联合设计输入的 Quartus?II 设计方法?
https://www.360docs.net/doc/e0813439.html,?
~?5?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
3.4
?
原理分析和设计思路?
?
我们将整个功能分为三个模块: 时钟模块:产生 10ms 一个周期的时钟(频率为 100Hz) ; 按键消抖模块: 对按键的动作消除抖动, 当按下时输出电平, 未按下式输出高电平; LED 显示模块:通过按键的输入对 LED 显示状态进行调整输出。 整个结构如下图所示:?
当然, 我们也可以使用一个模块把所有的事情做了。 本实验这样设计的目的在于让大家 掌握基于原理图和源代码输入联合设计的方式,并对模块的划分有个初步的概念。 这些模块,我们经过一些修改,是可以快速利用到其他的项目中的,这样可以解决我们 的重复编程所花费的时间。 按照本教程一开始介绍的连接方法,实验扩展板上的 LED、开关和 CPLD 的连接关系如 下表所示: 器件 D1 D2 D3 D4 D5 D6 D7 D8 B1 信号名 LED[0] LED[1] LED[2] LED[3] LED[4] LED[5] LED[6] LED[7] KEY[0] CPLD 启蒙板对应引脚 40 41 42 43 47 48 49 50 84?
3.5
1. 2. 3. 4. 5. 6. 7. 8. 9.
源代码?
时钟分频模块代码: module?CLK_DIV(CLK,DIVCLK); input CLK; output DIVCLK; reg DIVCLK; reg [DIV_WIDTH‐1:0]counter; parameter DIV_Num?=?500000; parameter DIV_WIDTH?=?19; //时钟偶数分频模块 //定义输入时钟 //定义输出时钟 //定义寄存器 //定义计数寄存器 //参数,定义分频参数 //参数,定义分频参数占用的位宽?
https://www.360docs.net/doc/e0813439.html,?
~?6?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. always?@?(posedge?CLK) //分频过程 begin if(counter?==?((DIV_Num>>1)‐1)) //注意分频数的计算公式 begin counter?<=?0; DIVCLK <=?~DIVCLK; end else counter?<=?counter?+?1'b1; end endmodule?
此模块中,我们使用了参数(关键字 parameter) ,在编译时我们可以改变参数值来初始 化模块,后面的实验步骤中我们会通过实例来演示如何设置。 点亮 LED 的模块需要实现 Key 每次按下(从高电平到低电平) ,LED 的状态改变一次。 具体代码: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. module?LightLED(Key,LED); input Key; output [7:0]LED; reg [7:0]LED; always?@(negedge?Key) begin if(LED?==?8'b11111111) LED?<=?8'b00000001; else LED?<=?LED<<1?|?LED; end endmodule //点亮 LED 模块 //定义输入 //定义输出 //定义寄存器 //按键按下的时候改变 LED 状态?

//全部点亮后的复位 //每次多点亮一个?
按键消抖模块: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. module?Debounce(CLK,KeyIn,KeyOut); input CLK; input [KEY_WIDTH‐1:0]KeyIn; output [KEY_WIDTH‐1:0]KeyOut; reg [KEY_WIDTH‐1:0]KeyTemp1,KeyTemp2; parameter KEY_WIDTH?=?8; always?@(posedge?CLK) begin KeyTemp1?<=?KeyIn; KeyTemp2?<=?KeyTemp1; end assign?KeyOut?=?(KeyTemp1?|?KeyTemp2); ~?7?~ //按键去抖模块 //定义时钟输入 //定义按键输入 //定义按键输出 //定义寄存器 //参数,定义按键的个数?
//当前的按键值存入寄存器 //上一次的按键值存入寄存器 //两次按键值进行比较输出 线路人生|Circuitry?
https://www.360docs.net/doc/e0813439.html,?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 15. endmodule 这个模块中,时钟输入为一个慢速时钟,频率为 100Hz(每周期 10ms) ,当有按键按下 时,先将此值存入寄存器,隔 10ms 后再次检测按键的输入,如果仍然为低电平,则确认此 按键按下;如果第二次为高电平,则认为上一次的按键输入为抖动期。?
3.6
实验步骤?
(1)利用新项目向导在“D:\Tutorial\EPM570\DAY04\Exp01”目录下建立一个名为 “KeyAndLED”的项目,选择好相应的 CPLD 器件。 (2)新建三个 Verilog HDL 设计文件,将三个模块的代码分别设计并保存为 CLK_DIV.v, LightLED.v,Debounce.v。 (3)为三个模块生成符号文件(*.bsf) : 选择 Files?>?Create/Update?>?Create?Symbol?Files?for?Current?File 或在 Project?Navigator 窗 口的 Files 选项卡中,在相应的文件上点击右键,在弹出的菜单中选择 Create?Symbol?Files?for Current?File(如下图所示) 。?
生成成功后会弹出如下窗口:?
(4)利用 MegaWizard Plug‐In Manager 例化 MAX II 的片内晶振,命名为 OSC(具体的 步骤请回忆一下前面的教程) 。最后一步中注意默认是勾选上了 OSC.bsf 文件的,如果没有 勾选上请选上。?
https://www.360docs.net/doc/e0813439.html, ~?8?~ 线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 (5) 为每个模块生成相应的符号文件后, 新建一个 Block?Diagram/Schematic?File 型文件。 按照前一天实验中方法, 在文件中加入输入输出引脚, 并加入前面生成的三个模块的符号以 及我们例化的 OSC:?
注意,项目中生成的 Symbol 在 Project 树下面,而输入输出引脚在库的树下。 将相应的信号连接好之后的文件如下所示(注意 OSC 的 oscena 端需要连接到高电平使 能该模块) :?
保存文件为 DebounceLED.bdf。 (6)修改参数: CLK_DIV 模块中的分频参数和位宽参数、 Debounce 模块中的按键位宽参数我们都是需要 修改的,具体的方法是双击参数的框(或者是右键点击符号,然后选取 Properties) :?
https://www.360docs.net/doc/e0813439.html, ~?9?~ 线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 在弹出的窗口中(Parameters 选项卡) ,Name 选择相应的参数,Setting 修改为具体的 值,而 Type 是参数值的类型。 由于用到的是 CPLD 的内部晶振,所以是针对 4.4MHz 的时钟进行分频,而不是用启蒙 板上的外部有源晶振,所以参数不能使用源代码中的那个,需要在编译前重新设置。 设置好后结果如下:?
同样,将按键的个数设为 1 个:?
https://www.360docs.net/doc/e0813439.html, ~?10?~ 线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 最后的设计文件如下图所示:?
(5)再次保存文件,设置不用的 IO 为三态输入,并编译项目; (6)锁定引脚并重新编译项目; (7)下载到 CPLD 中观察实验结果:是否和我们设计的初衷一致??
3.7
小结?
本实验中,我们学会了多种设计输入方法的综合应用,在以后的设计中,我们可以利用 其中一种,也可以利用多种进行设计,这个就要看大家的设计习惯了。用 Verilog HDL 进行 设计,不使用原理图设计方法,我们也可以在代码中进行模块例化和连接。 原理图方式更加直观,有其优势,但是在其中加入项目中的模块必须先生成符号文件。 不过这个符号文件(bsf 文件)我们可以直接拷贝到其他项目中直接使用,而不用再次生成 (不需要拷贝.v 文件) ,重用性还是非常高的。 希望大家通过本实验, 学会这些技巧, 为自己的学习和设计积累经验并摸索出适合自己 的方法。?
3.8
思考和练习?
(1) 如果在原理图中将 OSC 和 Debounce 模块去掉, 输入直接连接到 LightLED 模块, Key 效果会怎么样?大家试试用这个方法,按键控制 LED 点亮的数目增加是否会逐个加 1,为什 么会出现这种情况? (2)试着修改 Debouce 模块的参数,使用两个按键;并修改 LightLED 模块,在其中加 入另外一个按键, 使得该按键按下后点亮的 LED 数量减少一个 (原来的按钮仍然是增加点亮 个数) 。?
4. 拨码开关(按钮)原理?
4.1
?
轻触开关(按钮)介绍?
在很多控制系统中,我们都需要输入一些参数,这些参数一经设置将维持不变,除非是 ~?11?~ 线路人生|Circuitry?
https://www.360docs.net/doc/e0813439.html,?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 系统断电后重新设置,这个时候我们就可以采用拨码开关。当然,我们还可以将拨码开关作 为系统的输入,实时修改这些输入的值,使系统按照输入的参数值的模式运行程序。 拨码开关种类有很多,EDA/MCU 实验扩展板上使用的是 4 位拨码开关,这种开关每一 位对应一个输出,其状态是高电平“1”或低电平“0” 。 此外还有拨盘式,它有一个控制端,4 个输出端;每个拨盘有多个位置,每个位置对应 的输出为 4 位的 BCD 编码。 我们可以把拨码开关看做一种特殊的按键开关,只是在闭合和断开的状态有“锁存”而 已。?
?
4.2
实验扩展板上的独立式轻触开关原理图?
?
?
CPLD 只需要检测连接到该拨码开关相应位的 IO 的电平即可获知其是否闭合,高电平代 表断开(使用的时候,白色的拨片拨到 ON 一端) ,低电平代表闭合(拨到靠近数字一端) 。 按照本教程一开始介绍的连接方法,实验扩展板上的拨码开关和 CPLD 的连接关系如下 表所示: 器件 S1_1 S1_2 S1_3 信号名 SW[0] SW[1] SW[2] ~?12?~ CPLD 启蒙板对应引脚 78 81 82?
https://www.360docs.net/doc/e0813439.html,?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 S1_4 SW[3] 83?
5. 实验二(拨码开关的使用)?
5.1 实验要求?
利用实验扩展板的 4 位拨码开关和 8 个 LED1 实现:当拨码开关的输入为二进制的 0000~1000 时,LED 的输入为其代表的 BCD 编码值(SW0 为 0,SW1 为 2,SW2 为 4,SW 为 8) ;当输入为二进制的 1001~1111 时,LED 全部熄灭(和 0000 的状态一样) 。?
5.2
实验目标?
通过本实验,学会拨码开关作为系统的参数输入的方法;掌握利用 qsf 文件进行引脚锁 定的方法。?
5.3
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
源代码?
本实验的功能较为简单,使用 case 语句即可实现,代码如下: module?SW_LED(SW,LED); input [3:0]SW; output [7:0]LED; reg [7:0]LED; always?@(SW) begin case(SW) 4'b0001:?LED?=?8'b00000001; 4'b0010:?LED?=?8'b00000011; 4'b0011:?LED?=?8'b00000111; 4'b0100:?LED?=?8'b00001111; 4'b0101:?LED?=?8'b00011111; 4'b0110:?LED?=?8'b00111111; 4'b0111:?LED?=?8'b01111111; 4'b1000:?LED?=?8'b11111111; default:?LED?=?8'b00000000; endcase end endmodule //模块名 //定义输入 //定义输出 //定义寄存器 //过程 //使用 case 语句实现目标功能?
https://www.360docs.net/doc/e0813439.html,?
~?13?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
5.4
实验步骤?
(1)利用新项目向导在“D:\Tutorial\EPM570\DAY04\Exp02”目录下建立一个名为 “SW_LED”的项目,选择好相应的 CPLD 器件。 (2)新建三个 Verilog?HDL 设计文件,输入 Verilog 代码分别设计并保存为 SW_LED.v。 (3)利用 qsf 文件,在编译前锁定引脚: 我们再打开前面一个实验项目的 DebounceLED.qsf 文档,这个文件保存了项目里面的很 多设置, 具体的说明大家可以参考 Quartus?II 的帮助文档中的相应内容。 里面有这么几句 (省 略了部分代码) : 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. set_global_assignment?‐name?FAMILY?"MAX?II" set_global_assignment?‐name?DEVICE?EPM570T100C5 …………………… set_global_assignment?‐name?RESERVE_ALL_UNUSED_PINS?"AS?INPUT?TRI‐STATED" set_location_assignment?PIN_40?‐to?LED[0] set_location_assignment?PIN_41?‐to?LED[1] set_location_assignment?PIN_42?‐to?LED[2] set_location_assignment?PIN_43?‐to?LED[3] set_location_assignment?PIN_47?‐to?LED[4] set_location_assignment?PIN_48?‐to?LED[5] set_location_assignment?PIN_49?‐to?LED[6] set_location_assignment?PIN_50?‐to?LED[7]?
其中第 1 句设置项目所选的器件的系列——MAX II;第 2 句是选择的项目所用的器件; 第 4 句是设置不用的引脚为三态输入,后面 8 句是锁定 LED 的到相应 CPLD 引脚。 我们再打开本实验项目的 qsf 文件,可以看到前面两句是有的,我们可以把后面 9 句加 到文件的末尾,此外再加上这么几句: 1. 2. 3. 4. set_location_assignment?PIN_78?‐to?SW[0] set_location_assignment?PIN_81?‐to?SW[1] set_location_assignment?PIN_82?‐to?SW[2] set_location_assignment?PIN_83?‐to?SW[3]?
保存文件,我们再打开 Assignment?Editor,可以看到,引脚已经锁定好了:?
唯一的区别是以前我们没有编译项目之前, To 一列是没有办法显示项目中的引脚的, 在 现在前面有一个问号,而且已经锁定好了引脚。 锁定语句的格式大家可以自己总结一下, 稍微修改修改就可以用于其它的引脚了, 看看 后面我们加的 4 个 SW 引脚就是如此。 此外,我们也可以看到在 Device?Pin?Options 中的 Unused?Pins 已经设置好了未用引脚的 https://www.360docs.net/doc/e0813439.html, ~?14?~ 线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天 状态为三态输入:?
(4)编译项目; (5)下载到 CPLD 中观察实验结果:是否和我们设计的初衷一致??
5.5
小结?
利用 qsf 文件不但可以在编译前锁定项目中的引脚,还可以设置项目的参数,这个方法 虽然没有直观的图形界面操作方便, 但是不同项目中重复的地方是可以互用的, 这样可以节 约我们很多时间(不用一个引脚一个引脚的去锁定,也不用先编译一次再锁定,然后再编译 一次才能下载到 CPLD) 。 由此,我们肯定会想,用一个文件将这些常用的参数设定、引脚锁定的语句保存下来, 以后的项目中都可以拷贝进去用。 这样我们可以节约更多的时间, 也不用每次都去打开以前 的项目的 qsf 文件那么麻烦。 其实,还有更加简单的办法来做这个事情,那就是使用 tcl 脚本文件。关于这个方法, 我们会在后面的教程中教大家,如果有兴趣的同学也可以先查查资料,自己先学习一下。 注意:利用 qsf 文件和 tcl 脚本锁定引脚,文件中的引脚名必须和项目中定义的引脚名 对应(名称、大小写) ,否则将无法锁定。?
5.6
练习?
将 SW 的第一位作为输入,控制 8 个 LED 的流水灯的方向,当输入为高电平的时候从左 到右流水,当输入为低电平的时候从右到左流水。?
https://www.360docs.net/doc/e0813439.html,?
~?15?~?
线路人生|Circuitry?

基于 Verilog?HDL 的数字系统设计入门教程(CPLD 篇)——第四天?
6. 后记?
又一篇教程完成了, 不过由于最近个人的私事很多, 所以没抽出太多时间来做这个教程, 希望大家能谅解。 最近还做了一个事情,就是联系购买了几十套 CPLD 的学习平台的硬件,弄成了 DIY 的 套件,方便大家组建自己的硬件学习平台。不过不知道这个事情最后的结果会怎么样,反正 现在看来好像并没有得到太多的响应, 也不知道有多少人正在看这个系列的教程, 并期待后 续教程的推出。 今天教程就到这里结束了,实际上利用按键、拨码开关和 LED,基本可以完成大多数的 数字逻辑学习, 只不过只是这几个东西似乎有点枯燥, 所以后面的内容中将讲解更多的外设, 也会将更加精彩。?
7. 其它信息?
重庆邮电大学自动化学院 黄智宇 博士/副教授 zhiyuh@https://www.360docs.net/doc/e0813439.html, 主页: 线路人生 https://www.360docs.net/doc/e0813439.html, 技术讨论 QQ 群: 6764811、21934647 (群一般用于网站事务通知,技术讨论请尽量使用论坛)
https://www.360docs.net/doc/e0813439.html,?
~?16?~?
线路人生|Circuitry?

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

基于xilinx仿真 数字电子时钟的VHDL设计

VHDL语言设计数字时钟 实验性质:综合性实验级别: 开课单位:信息与通信工程学院通信工程系学时:4学时 一、实验目的: 1、学习用VHDL语言实现比较大型的电路的方法。 2、继续巩固cpld技术层次化设计方法。 二、实验器材: 计算机、Quartus II软件或xilinx ISE 三、实验内容: 设计一数字时钟,要求具有时、分、秒、计数显示功能,以24小时循环计时;具有清零,调节小时,分钟功能;具有整点报时功能。 四、实验步骤: 1、根据电路特点,用层次设计的概念,将此任务分成若干模块,规定每一模块的功能和各模块之间的接口。让几个学生分作和调试其中之一,然后再将各模块合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。 2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。 3、模块说明: 各种进制的计数及时钟控制模块(10进制、6进制、24进制) 扫描分时显示,译码模块 各模块都用VHDL语言编写 实现电子钟原理图

各模块程序 秒模块: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity second is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; semin : in STD_LOGIC; enmin : out STD_LOGIC; daout : out STD_LOGIC_VECTOR (6 downto 0)); end second; architecture Behavioral of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enmin_2:std_logic; begin daout<=count; enmin_2<=(semin and clk); enmin<=(enmin_1 or enmin_2); process(clk,reset,semin) begin if(reset='0')then count<="0000000"; enmin_1<='0'; elsif(clk'event and clk='1')then

verilog数字系统设计教程习题答案

verilog 数字系统设计教程习题答案第二章 HDL 既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互联的结构模块。这意味着利用Verilog 语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。 2.模块的基本结构由关键词module和endmodule构成。 3.一个复杂电路系统的完整Verilog HDL 模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。 HDL和VHDL乍为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。 5.不是

6.将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。 7.综合工具可以把HDL变成门级网表。这方面Synopsys工具占有较大的优势,它的Design Compile 是作为一个综合的工业标准,它还有另外一个产品叫Behavior Compiler ,可以提供更高级的综合。 另外最近美国又出了一个软件叫Ambit ,据说比Synopsys 的软件更有效,可以综合50万门的电路,速度更快。今年初Ambit 被Cadence 公司收购,为此Cade nee放弃了它原来的综合软件Syn ergy。随着FPGA 设计的规模越来越大,各EDA公司又开发了用于FPGA设计的综合软件,比较有名的有:Sy nopsys 的FPGAExpress,Cade nee 的Syn plity ,Mentor的Leonardo,这三家的FPGA综合软件占了市场的绝大部分。 8.整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件 进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。用于适配,适配将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC Jam格式的 文件 9.在FPGA设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与

FPGACPLD数字电路设计经验

FPGA/CPLD数字电路设计经验分享 摘要:在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的抽象度也相应提高,因此在设计中较难把握,但在理解RTL电路时序模型的基础上,采用合理的设计方法在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平。 关键词:FPGA数字电路时序时延路径建立时间保持时间 1 数字电路设计中的几个基本概念: 1.1 建立时间和保持时间: 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间 注:在考虑建立保持时间时,应该考虑时钟树向后偏斜的情况,在考虑建立时间时应该考虑时钟树向前偏斜的情况。在进行后仿真时,最大延迟用来检查建立时间,最小延时用来检查保持时间。 建立时间的约束和时钟周期有关,当系统在高频时钟下无法工作时,降低时钟频率就可以使系统完成工作。保持时间是一个和时钟周期无关的参数,如果设计不合理,使得布局布线工具无法布出高质量的时钟树,那么无论如何调整时钟频率也无法达到要求,只有对所设计系统作较大改动才有可能正常工作,导致设计效率大大降低。因此合理的设计系统的时序是提高设计质量的关键。在可编程器件中,时钟树的偏斜几乎可以不考虑,因此保持时间通常都是满足的。

#用Verilog语言编写的多功能数字钟

2009—2010学年第二学期 《数字电子技术课程设计》报告 专业班级:电气-08-1 姓名:曹操 学号:08051127 设计日期:2010年8月23日~27日 一.设计题目 多功能数字钟电路设计 二.设计任务及要求 多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。 在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。 对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。 调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。 管脚分配如下表: 端口名使用模块信号对应FPGA管脚说明 S1 按键开关S1 R16 调整小时 S2 按键开关S2 P14 调整分钟 RST 按键开关S8 M15 复位 LED LED模块D1 L14 整点倒计时 LEDAG0 数码管模块A段N4 时间显示 LEDAG1 数码管模块B段G4 LEDAG2 数码管模块C段H4 LEDAG3 数码管模块D段L5 LEDAG4 数码管模块E段L4 LEDAG5 数码管模块F段K4 LEDAG6 数码管模块G段K5 SEL0 数码管选择位1 M4 8个数码管

基于FPGA的数字钟设计

摘要 伴随着集成电路技术的发展, 电子设计自动化(EDA)技术逐渐成为数字电路设计的重要手段。基于FPGA的EDA技术的发展和应用领域的扩大与深入,使得EDA技术在电子信息,通信,自动控制,计算机等领域的重要性日益突出。 本设计给出了一种基于FPGA的多功能数字钟方法,采用EDA作为开发工具,VHDL语言和图形输入为硬件描述语言,QuartusII作为运行程序的平台,编写的程序经过调试运行,波形仿真验证,下载到EDA实验箱的FPGA芯片,实现了设计目标。 系统主芯片采用CycloneII系列EP2C35F672C8。采用自顶向下的设计思想,将系统分为五个模块:分频模块、计时模块、报时模块、显示模块、顶层模块。用VHDL语言实现各个功能模块, 图形输入法生成顶层模块. 最后用QuartusII 软件进行功能仿真, 验证数字钟设计的正确性。 测试结果表明本设计实现了一个多功能的数字钟功能,具有时、分、秒计时显示功能,以24小时循环计时;具有校正小时和分钟的功能;以及清零,整点报时功能。 关键词:EDA技术;FPGA;数字钟;VHDL语言;自顶向下

Abstract Accompanied by the development of integrated circuit technology, electro nic design automation (EDA) technology is becoming an important means of digital circuit design. FPGA EDA technology development and expansion of a pplication fields and in-depth, the importance of EDA technology in the field of electronic information, communication, automatic control, computer, etc. hav e become increasingly prominent. This design gives a FPGA-based multifunctional digital clock using ED A as a development tool, VHDL language and graphical input hardware descri ption language, the QuartusII as a platform for running the program, written procedures debugging and running, the waveform simulation downloaded to th e FPGA chip to achieve the design goals. The main system chip CycloneII series EP2C35F672C8. Adopted a topdw n design ideas, the system is divided into five modules: frequency module, ti ming module, timer module, display module, the top-level module. With VHD L various functional modules, graphical input method to generate the top-level module. Last QuartusII under simulation, to verify the correctness of the digi tal clock design. The test results show that the design of a multifunctional digital clock, with seconds time display, 24-hour cycle timing; has a school, cleared, and th e whole point timekeeping functions. Key words: EDA technology; FPGA; VHDL language; top-down; digital cloc k

《verilog_数字系统设计课程》(第二版)思考题答案

Verilog数字系统设计教程思考题答案 绪论 1.什么是信号处理电路?它通常由哪两大部分组成? 信号处理电路是进行一些复杂的数字运算和数据处理,并且又有实时响应要求的电路。它通常有高速数据通道接口和高速算法电路两大部分组成。 2.为什么要设计专用的信号处理电路? 因为有的数字信号处理对时间的要求非常苛刻,以至于用高速的通用处理器也无法在规定的时间内完成必要的运算。通用微处理器芯片是为一般目的而设计的,运算的步骤必须通过程序编译后生成的机器码指令加载到存储器中,然后在微处理器芯片控制下,按时钟的节拍,逐条取出指令分析指令和执行指令,直到程序的结束。微处理器芯片中的内部总线和运算部件也是为通用目的而设计,即使是专为信号处理而设计的通用微处理器,因为它的通用性也不可能为某一特殊的算法来设计一系列的专用的运算电路而且其内部总线的宽度也不能随便的改变,只有通过改变程序,才能实现这个特殊的算法,因而其算法速度也受到限制所以要设计专用的信号处理电路。 3.什么是实时处理系统? 实时处理系统是具有实时响应的处理系统。 4.为什么要用硬件描述语言来设计复杂的算法逻辑电路? 因为现代复杂数字逻辑系统的设计都是借助于EDA工具完成的,无论电路系统的仿真和综合都需要掌握硬件描述语言。 5.能不能完全用C语言来代替硬件描述语言进行算法逻辑电路的设计? 不能,因为基础算法的描述和验证通常用C语言来做。如果要设计一个专用的电路来进行这种对速度有要求的实时数据处理,除了以上C语言外,还须编写硬件描述语言程序进行仿真以便从电路结构上保证算法能在规定的时间内完成,并能通过与前端和后端的设备接口正确无误地交换数据。 6.为什么在算法逻辑电路的设计中需要用C语言和硬件描述语言配合使用来提 高设计效率? 首先C语言很灵活,查错功能强,还可以通过PLI编写自己的系统任务,并直接与硬件仿真器结合使用。C语言是目前世界上应用最为广泛的一种编程语言,因而C程序的设计环境比Verilog HDL更完整,此外,C语言有可靠地编译环境,语法完备,缺陷缺少,应用于许多的领域。比较起来,Verilog语言只是针对硬件描述的,在别处使用并不方便。而用Verilog的仿真,综合,查错等大部分软件都是商业软件,与C语言相比缺乏长期大量的使用,可靠性较差,亦有很多缺陷。所以只有在C语言的配合使用下,Verilog才能更好地发挥作用。C 语言与Verilog HDL语言相辅相成,互相配合使用。这就是即利用C语言的完整性又要结合Verilog对硬件描述的精确性,来更快更好地设计出符合性能要求的

数字系统设计

第一次作业 EDA 的英文全称是什么EDA 的中文含义是什么 答:ED自动化A 即Electronic Design Automation 的缩写,直译为:电子设计。 什么叫 EDA 技术利用 EDA 技术进行电子系统的设计有什么特点 答:EDA 技术有狭义和广义之分,狭义EDA 技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC 自动设计技术。 ①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。 从使用的角度来讲,EDA 技术主要包括几个方面的内容这几个方面在整个电子系统的设计中分别起什么作用 答:EDA 技术的学习主要应掌握四个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统。其中,硬件描述语言是重点。对于大规模可编程逻辑器件,主要是了解其分类、基本结构、工作原理、各厂家产品的系列、性能指标以及如何选用,而对于各个产品的具体结构不必研究过细。对于硬件描述语言,除了掌握基本语法规定外,更重要的是要理解VHDL 的三个“精髓”:软件的强数据类型与硬件电路的惟一性、硬件行为的并行性决定了VHDL 语言的并行性、软件仿真的顺序性与实际硬件行为的并行性;要掌握系统的分析与建模方法,能够将各种基本语法规定熟练地运用于自己的设计中。对于软件开发工具,应熟练掌握从源程序的编辑、逻辑综合、逻辑适配以及各种仿真、硬件验证各步骤的使用。对于实验开发系统,主要能够根据自己所拥有

数字电路时钟设计verilog语言编写--

电子线路设计与测试 实验报告 一、实验名称 多功能数字钟设计 二、实验目的 1.掌握可编程逻辑器件的应用开发技术 ——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法;

4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计。 三、设计内容及要求 1.基本功能 具有“秒”、“分”、“时”计时功能,小时按24小时制计时。 具有校时功能,能对“分”和“小时”进行调整。 2.扩展功能 仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。 定时控制,其时间为23时58分。 3.选做内容 任意时刻闹钟(闹钟时间可设置)。 自动报整点时数。 四.系统框图与说明 数字钟框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。 2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。 3.计数器的输出经译码器送显示器。 五.设计步骤 1.列写多功能数字钟设计--层次结构图 2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路; 3.设计各单元电路并进行仿真; 4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合; 5.下载到Cyclone II FPGA实验平台上,实际测试数字钟的逻辑功能。

六.Verilog代码 //24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能 module clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_ke y,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell); input CP_1KHz;//定义输入时钟 input Jsh_Min_key,Jsh_Hour_key;//定义校时按键 input Set_Hour_key,Set_Min_key;//定义闹钟定时按键 input Show; //定义显示模式按键 input Ctrl_Bell;//定义闹钟铃声控制 output [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量 wire [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量类型 wire [7:0]Hour,Minute,Second; wire [7:0]Set_Hour_Out,Set_Min_Out; wire Out_1Hz,Out_500Hz;//定义分频模块输出变量类型 reg Alarm_Ring,Alarm_Clock_1KHz;//定义仿广播电台报时和固定时刻定时铃声 output Alarm;//蜂鸣器输入 supply1Vdd; wire Alarm_Clock;//任意时刻闹钟闹铃 wire MinL_EN,MinH_EN,Hour_EN;//定义中间变量类型 //分频 fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz); //正常计时 counter10 U1(.Q(Second[3:0]),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz)); counter6 U2(.Q(Second[7:4]),.nCR(Vdd),.EN(Second[3:0]==4'h9),.CP(Out_1Hz)); assignMinL_EN=Jsh_Min_key?Vdd:(Second==8'h59); assign MinH_EN=(Jsh_Min_key&&(Minute[3:0]==4'h9))||(Minute[3:0]==4'h9)&&(Second==8'h59 ); counter10 U3(.Q(Minute[3:0]),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz)); counter6 U4(.Q(Minute[7:4]),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz)); assign Hour_EN=Jsh_Hour_key?Vdd:((Minute==8'h59)&&(Second==8'h59)); counter24 U5(Hour[7:4],Hour[3:0],Vdd,Hour_EN,Out_1Hz); //仿广播电台正点报时 baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);//在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点 //固定时刻定时

多功能数字钟的VHDL设计

毕业设计论文 多功能数字钟的VHDL设计 系 xxxxxxxxxxxxxxxxx 专业 xxxxxxxxxxxxx 学号 xxxxxxxxxxx 姓名 xxxxxxx 班级 xxxxxxxxxxxx 指导老师 xxxxxxxxxx 职称 指导老师职称 毕业设计时间 2009年11月——2010年1月

摘要:应用VHDL语言编程,进行了多功能数字钟的设计,并在MAX PLUSⅡ环境下通过了编译、仿真、调试。 关键词:VHDL;EDA;数字钟;仿真图 0.引言 随着科学技术的迅猛发展,电子工业界经历了巨大的飞跃。集成电路的设计正朝着速度快、性能高、容量大、体积小和微功耗的方向发展。基于这种情况,可编程逻辑器件的出现和发展大大改变了传统的系统设计方法。可编程逻辑器件和相应的设计技术体现在三个主要方面:一是可编程逻辑器件的芯片技术;二是适用于可逻辑编程器件的硬件编程技术,三是可编程逻辑器件设计的EDA开发工具,它主要用来进行可编程逻辑器件应用的具体实现。在本实验中采用了集成度较高的FPGA 可编程逻辑器件, 选用了VHDL硬件描述语言和MAX + p lusⅡ开发软件。VHDL硬件描述语言在电子设计自动化( EDA)中扮演着重要的角色。由于采用了具有多层次描述系统硬件功能的能力的“自顶向下”( Top - Down)和基于库(L ibrary - Based)的全新设计方法,它使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短 了产品的研制周期。MAX + p lusⅡ是集成了编辑器、仿真工具、检查/分析工具和优化/综合工具的这些所有开发工具的一种集成的开发环境,通过该开发环境能够很方便的检验设计的仿真结果以及建立起与可编程逻辑器件的管脚之间对应的关系。 1. EDA简介 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

(完整word版)数字系统设计试卷2012A卷

中国矿业大学2012~2013学年第一学期 《数字系统设计基础》试卷(A)卷 考试时间:100 分钟考试方式:闭卷 学院_________班级_____________姓名___________学号____________ 一、选择题(20分,每题2分) 1.不完整的IF语句,其综合结果可实现:_________ A. 三态控制电路 B. 条件相或的逻辑电路 C. 双向控制电路 D. 时序逻辑电路 2.关于进程语句说法错误的是_________ A. PROCESS为一无限循环语句(执行状态、等待状态) B. PROCESS中的顺序语句具有明显的顺序/并行运行双重性 C. 进程必须由敏感信号的变化来启动 D. 变量是多个进程间的通信线 3、对于VHDL以下几种说法错误的是___________ A. VHDL程序中的实体部分是对元件和外部电路之间的接口进行的描述,可以看成是定义 元件的引脚 B. 一个完整的VHDL程序总是由库说明部分、实体和结构体等三部分构成 C. VHDL程序中是区分大小写的 D.结构体描述元件内部结构和逻辑功能 4.一个设计实体(电路模块)包括实体与结构体两部分,实体描述___________。 A. 实体与结构体之间的连接关系; B. 器件的内部功能; C. 实体使用的库文件; D. 器件外部可见特性如端口的数目、方向等 5. 组合逻辑电路中的毛刺信号是由于______引起的。 A. 电路中存在延迟 B.电路不是最简 C. 电路有多个输出 D.电路中使用不同的门电路 6. 下列关于临界路径说法正确的是___________ A. 临界路径与系统的工作速度无关 B. 临界路径减小有助于缩小电路规模 C. 临界路径减小有助于降低功耗 D. 临界路径是从系统输入到输出的各条路径中信号通过时间最长的那条路径 7. 关于FPGA和CPLD的区别说法正确的是___________ A. CPLD 更适合完成各种算法和组合逻辑,FPGA 更适合于完成时序逻辑

基于verilog数字秒表的设计实现--生产实习报告

生产实习报告 班级:通信13-2班 姓名:闫振宇 学号:1306030222 成绩: 电子与信息工程学院 信息与通信工程系

基于verilog 数字秒表的设计实现 1. 概述 硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样下去直到可以直接用EDA 元件库中的基本元件来实现为止。 2. 设计目的及要求 a. 有源晶振频率:50MHZ ; b. 测试计时范围:00' 00” 00 ~ 59 ',59显”示9的9 最长时间为59 分59 秒; c. 数字秒表的计时精度是10ms; d. 显示工作方式:六位BCD 七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。 3. 设计原理秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。 秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有 6 个计数器与之相对应; 6 个计数器的输出全都为BCD 码输出,这样便与同显示译码器连接。 利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD 器件上用Verilog 语言实现。这样设计具有体积小,设计周期短,调试方 便,故障率地和修改升级容易等特点。 本设计采用依次采用以下设计方法: 1)按键输入缓存,键盘消抖设计;

根据QuartusII软件的数字时钟设计

实验名称:数字时钟设计 姓名:杨龙成班级:电子与通信工程学号: 3120302012 成绩: 一、实验目的 1.掌握各类计数器及它们相连的设计方法; 2.掌握多个数码管显示的原理与方法; 3.掌握模块化设计方式; 4.掌握用VHDL语言的设计思想以及整个数字系统的设计。 二、实验内容 1. 设计要求 1)具有时、分、秒计数显示功能,在数码管显示00:00:00~23:59:59,以24小时循环计时。 2)完成可以计时的数字时钟时钟计数显示时有LED灯的花样显示。 3)具有调节小时、分钟及清零的功能。 4)具有整点报时功能。 2. 性能指标及功能设计 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,时钟—24进制计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间。可以通过实验板上的键7和键4进行任意的调整,因为时钟信号均是1HZ的,所以LED灯每变化一次就来一个脉冲,即计数一次。 3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。 4)蜂鸣器在整点时有报时信号产生,产生“滴答.滴答”的报警声音。 5)根据进位情况,LED灯在时钟显示时有花样显示信号产生。 3. 系统方框图

三、设计原理和过程 3.1 硬件设计 本设计使用VHDL硬件开发板,可编程逻辑器件EMP1270T144C5系列。设计过程中用到的外围电路的设计有电源部分,可编程器件EMP1270T144C5,CPLD –JTAG接口,晶振和蜂鸣器,LED数码管显示,DIP开关与按键输入(具体电路见附录) 3.2 软件设计 3.2..1 程序包my_pkg的设计说明 为了简化程序设计增加可读性,系统采用模块化的设计方法,重复使用的组件以元件(component)的形式存在,以便相关块的调用。下面列出my_pkg组件包的代码。library ieee; use ieee.std_logic_1164.all; package my_pkg is component div40M------------------------------------------------------------------元器件1 Port( clk: in std_logic; f1hz : out std_logic); end component; component count60-----------------------------------------------------------------元器件2 Port(clr,clk:in std_logic; one :buffer std_logic_vector(3 downto 0); ten :buffer std_logic_vector(3 downto 0); full:out std_logic; dout:buffer std_logic_vector(7 downto 0)); end component; component count24-----------------------------------------------------------------元器件3 Port(clr,clk:in std_logic;

数字系统设计-参考模板

第一次作业 1.1 EDA 的英文全称是什么?EDA 的中文含义是什么? 答:ED自动化A 即 Electronic Design Automation 的缩写,直译为:电子设计。 1.2什么叫 EDA 技术?利用 EDA 技术进行电子系统的设计有什么特点? 答:EDA 技术有狭义和广义之分,狭义 EDA 技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为 IES/ASIC 自动设计技术。①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。 1.3从使用的角度来讲,EDA 技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?

答:EDA 技术的学习主要应掌握四个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统。其中,硬件描述语言是重点。对于大规模可编程逻辑器件,主要是了解其分类、基本结构、工作原理、各厂家产品的系列、性能指标以及如何选用,而对于各个产品的具体结构不必研究过细。对于硬件描述语言,除了掌握基本语法规定外,更重要的是要理解 VHDL 的三个“精髓”:软件的强数据类型与硬件电路的惟一性、硬件行为的并行性决定了 VHDL 语言的并行性、软件仿真的顺序性与实际硬件行为的并行性;要掌握系统的分析与建模方法,能够将各种基本语法规定熟练地运用于自己的设计中。对于软件开发工具,应熟练掌握从源程序的编辑、逻辑综合、逻辑适配以及各种仿真、硬件验证各步骤的使用。对于实验开发系统,主要能够根据自己所拥有的设备,熟练地进行硬件验证或变通地进行硬件验证。 1.4 什么叫可编程逻辑器件(简称 PLD)? FPGA 和 CPLD 的中文含义分别是什么?国际上生产FPGA/CPLD 的主流公司,并且在国内占有较大市场份额的主要有哪几家?其产品系列有哪些?其可用逻辑门/等效门数大约在什么范围? 答:可编程逻辑器件(简称 PLD)是一种由用户编程以实现某种 逻辑功能的新型逻辑器件。 FPGA 和 CPLD 分别是现场可编程 门阵列和复杂可编程逻辑器件的简称。国际上生产 FPGA/CPLD 的主流公司,并且在国内占有市场份额较大的主要是Xilinx,Altera,Lattice 三家公司。Xilinx 公司的 FPGA 器件有 XC2000,XC3000,XC4000,XC4000E,XC4000XLA,XC5200 系列 等,可用门数为 1200~18 000;Altera 公司的 CPLD 器件有

基于VHDL语言实现数字电子钟的设计

基于VHDL语言实现数字电子钟的设计 一.设计要求: 1、设计内容 选用合适的可编程逻辑器件及外围电子元器件,设计一个数字电子钟,利用EDA软件(QUARTUS Ⅱ)进行编译及仿真,设计输入可采用VHDL硬件描述语言输入法)和原理图输入法,并下载到EDA实验开发系统,连接外围电路,完成实际测试。 2、设计要求 (1)具有时、分、秒计数显示功能。 (2)具有清零的功能,且能够对计时系统的小时、分钟进行调整。 (3)小时为十二小时制。 二.实验目的: 1.通过这次EDA设计中,提高手动能力。 2.深入了解时事时钟的工作原理,以及时事时钟外围硬件设备的组成。 3.掌握多位计数器相连的设计方法。 4.掌握十进制,六进制,二十四进制计数器的设计方法。 5.继续巩固多位共阴极扫描显示数码管的驱动,及编码。 6.掌握扬声器的驱动。 7.LED灯的花样显示。 8.掌握CPLD技术的层次化设计方法 三.实验方案: 数字系统的设计采用自顶向下、由粗到细, 逐步分解的设计方法, 最顶层电路是指系统的整体要求, 最下层是具体的逻辑电路的实现。自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块, 从而进行设计描述, 并且应用EDA 软件平台自动完成各功能模块的逻辑综合与优化, 门级电路的布局, 再下载到硬件中实现设计。因此对于数字钟来说首先是时分秒的计数功能,然后能显示,附带功能是清零、调整时分。通过参考EDA 课程设计指导书,现有以下方案: 1.作为顶层文件有输入端口:时钟信号,清零按键,调时按键,调分按键;输出端口有:用于接数码管的八段码

输出口,扫描用于显示的六个数码管的输出口。 2.底层文件分为: (1)时间计数模块。分秒计数模块计数为60计数,时计数模块为12计数。 (2)显示模块。显示模块由一个六进制计数器模块和一个七段译码器组成。进制计数器为六选一选择器的选择判断端提供输入信号, 六选一选择器的选择输出端分别接秒个位、秒十位、分个位、分十位和时个位、时十位的选通位用来完成动态扫描显示,同时依次输出秒个位、秒十位、分个位、分十位和时个位、时十位数向给译码模块。 (3)报警模块当时间到整点时就报时。输入有时分秒计数,时钟脉冲。 (4)采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示.采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,但无法显示图形文字,在显示星期是也只能用数字表示,而且采用动态扫描法与单片机连接时,在编程时比较复杂。所以也不采用了LED数码管作为显示。采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,所以在此设计中采用LCD液晶显示屏。 四.实验原理: 1. 实验主控系统原理图: 模块设计原理图:

相关文档
最新文档