基于Verilog HDL的数字系统设计入门教程(CPLD篇)——第四天(2)
CPLD,FPGA,Verilog,VHDL,数字系统,
基于 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; //时钟偶数分频模块 //定义输入时钟 //定义输出时钟 //定义寄存器 //定义计数寄存器 //参数,定义分频参数 //参数,定义分频参数占用的位宽 ~ 6 ~ 线路人生|Circuitry
CPLD,FPGA,Verilog,VHDL,数字系统,
基于 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
CPLD,FPGA,Verilog,VHDL,数字系统,
基于 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(具体的 步骤请回忆一下前面的教程) 。最后一步中注意默认是勾选上 …… 此处隐藏:2499字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




