数字系统设计与verilogHDL课程设计
数字系统设计与Verilog HDL实验报告(五)
![数字系统设计与Verilog HDL实验报告(五)](https://img.taocdn.com/s3/m/62b41a6cb80d6c85ec3a87c24028915f814d8452.png)
《数字系统设计与Verilog HDL》实验报告(五)班级: 自动1003班**: **学号: ********实验五、自动售饮料机系统设计一、实验目的1、了解及掌握状态机的基本构成用法;二、通过ModelSim软件编写程序, 用状态机可以编程设计简单的自动控制系统。
三、实验内容四、设计一个自动售饮料机。
假定每瓶饮料售价为2.5元, 可使用两种硬币, 即5角和1元, 机器有找零功能。
五、机器设计有2个投币孔, 可用2个按键来代替。
还设有2个输出孔, 分别输出饮料和找零, 提示用户取走饮料和零钱。
六、实验步骤及源程序新建工程及文件, 分别添加设计程序及测试程序, 进行编译及纠错, 编译通过后运行程序仿真进行调试得出结果。
设计模块:module sell(yi_yuan,wu_jiao, get,half_out,sell_out,reset,clk);parameter idle=0, half=1, one=2,two=3,three=4;input yi_yuan,wu_jiao,reset,clk;output get,half_out,sell_out;reg get,half_out,sell_out;reg[2:0] s;always @(posedge clk)beginif(reset)beginsell_out=0; get=0; half_out=0; s=idle;endelsecase(s)idle: beginsell_out=0; get=0; half_out=0;if(wu_jiao) s=half;else if(yi_yuan)s=one;endhalf: beginif(wu_jiao) s=one;else if(yi_yuan)s=two;endone: beginif(wu_jiao) s=two;else if(yi_yuan)s=three;endtwo: beginif(wu_jiao) s=three;else if(yi_yuan)beginsell_out=1;get=1; s=idle;endendthree: beginif(wu_jiao)beginsell_out=1; get=1; s=idle;endelse if(yi_yuan)beginsell_out=1;get=1;half_out=1; s=idle;endenddefault:beginsell_out=0; get=0; half_out=0; s=idle; endendcaseendendmodule测试模块:`timescale 1ns/1nsmodule sell_top;reg yi_yuan,wu_jiao,reset,CLK;wire get,half_out,sell_out;always #50 CLK=~CLK;initialbeginCLK =0; reset=1;#100 reset=0;yi_yuan=0;wu_jiao=0;endalways@(posedge CLK)beginwu_jiao={$random}%2;#50 wu_jiao=0;endalways@(posedge CLK)beginif(!wu_jiao)yi_yuan=1;#50 yi_yuan=0;endsell m(.yi_yuan(yi_yuan),.wu_jiao(wu_jiao), .get(get),.half_out(half_out),.sell_out(sell_out),.reset(reset),.clk(CLK));endmodule七、实验结果八、实验心得体会由于老师在实验前已经很详细的为我们讲解了这次实验的要点和要注意的问题, 所以这次实验我们完成的还是很成功的。
Verilog数字系统设计教程第三版课程设计
![Verilog数字系统设计教程第三版课程设计](https://img.taocdn.com/s3/m/f8833ab9e43a580216fc700abb68a98271feac86.png)
Verilog数字系统设计教程第三版课程设计介绍Verilog是一种充满活力的硬件描述语言(HDL),是数字系统设计中广泛使用的一种语言。
随着数字系统设计中应用越来越广泛,Verilog已经成为了数字系统设计工程师必须掌握的一门技能。
本文档主要介绍了Verilog数字系统设计教程第三版课程设计。
课程目标本课程通过Verilog数字系统设计教程第三版中的案例来帮助学生了解数字系统设计的基本概念和技能。
本课程的目标是:1.理解数字系统设计的基本概念和原理2.掌握Verilog语言的基本语法和使用方法3.能够使用Verilog设计数字系统4.能够对数字系统进行仿真和验证课程设计课程内容本课程根据Verilog数字系统设计教程第三版的案例,分为以下几个部分:1.Verilog的基本语法和使用方法2.设计单周期处理器并进行仿真和验证3.设计带缓存的单周期处理器并进行仿真和验证4.设计多周期处理器并进行仿真和验证课程安排本课程采用实践与理论相结合的方式进行教学。
具体安排如下:1.周一:上课讲解Verilog的基本语法和使用方法2.周二:自主学习并完成单周期处理器实验3.周三:上课讲解带缓存的单周期处理器的设计方法4.周四:自主学习并完成带缓存的单周期处理器实验5.周五:上课讲解多周期处理器的设计方法6.周六:自主学习并完成多周期处理器实验7.周日:讨论和总结实验结果课程评估本课程的评估分为两部分:1.实验报告:每个实验需要学生撰写实验报告,包括设计思路、Verilog代码、仿真结果等。
2.期末考试:期末考试主要考查学生对Verilog的掌握程度和对数字系统设计的理解程度。
总结本文档介绍了Verilog数字系统设计教程第三版课程设计的目标、内容、安排和评估。
本课程旨在帮助学生在数字系统设计中掌握基本概念和技能,并掌握Verilog的基本使用方法。
通过本课程的学习,学生将能够设计数字系统并进行仿真和验证。
Verilog数字系统设计-课程设计报告
![Verilog数字系统设计-课程设计报告](https://img.taocdn.com/s3/m/fb5ac04c08a1284ac950431d.png)
Verilog HDL数字系统设计课程设计课题:RISC_CPU设计与验证第一章:RISC_CPU概述(51.1课题的由来和设计环境介绍(5 1.2什么是CPU (5第二章:RISC_CPU结构(62.1 RISC_CPU整体结构(62.2 时钟发生器(72.2.1 时钟发生器的介绍(72.2.2 时钟发生器symbol(82.2.3 时钟发生器RTL(82.2.4 时钟发生器源代码(82.2.5 时钟发生器测试代码(92.2.6 时钟发生器仿真波形(10 2.3指令寄存器(102.3.1 指令寄存器介绍(102.3.2 指令寄存器symbol(112.3.3 指令寄存器RTL(112.3.4 指令寄存器源代码(11 2.3.5 指令寄存器测试代码(122.3.6指令寄存器仿真波形(13 2.4 累加器(132.4.1 累加器介绍(132.4.2 累加器symbol(132.4.3 累加器RTL(142.4.4 累加器源代码(142.4.5 累加器仿真代码(142.4.6 累加器仿真波形(152.5 算术运算器(152.5.1 算术运算器介绍(152.5.2 算术运算器symbol(162.5.3 算术运算器RTL(172.5.4 算术运算器源代码(182.5.5 算术元算器测试代码(192.5.6 算术运算器仿真波形(20 2.6数据控制器(202.6.1 数据控制器介绍(202.6.2 数据控制器smybol(20 2.6.3 数据控制器RTL(212.6.4 数据控制器源代码(21 2.6.5 数据控制器测试代码(222.6.6 数据控制器仿真波形(22 2.7 地址多路器(222.7.1地址多路器介绍(222.7.2 地址多路器smybol(232.7.3 地址多路器RTL(232.7.5 地址多路器测试代码(232.7.6 地址多路器仿真波形(24 2.8程序计数器(242.8.1 程序计数器介绍(242.8.2 程序计数器symbol(25 2.8.3 程序计数器RTL(252.8.4 程序计数器源代码(25 2.8.5 程序计数器测试代码(262.8.6 程序计数器仿真波形(26 2.9 状态控制器(272.9.1 状态控制器介器(272.9.2 状态控制器smybol(272.9.3 状态控制器RTL(272.9.4 状态控制器源代码(272.9.5 状态控制器测试代码(282.9.6 状态控制器仿真波形(29 2.10状态机(292.10.1状态机的介绍(292.10.2 状态机symbol(302.10.3 状态机RTL(302.10.4状态机源代码(312.10.5 状态机测试代码(352.10.6 状态机仿真波形(362.11 CPU内核模块的整合(362.11.1 CPU内核原理图(362.11.2 CPU内核smybol (37第三章:CPU外围模块的设计(37 3.1 地址译码器(373.1.1 地址译码器介绍(373.1.2 地址译码器smybol(373.1.3 地址译码器RTL(383.1.4 地址译码器源代码(383.1.5 地址译码器测试代码(383.1.6 地址译码器仿真波形(393.2 RAM (393.2.1 RAM的介绍(393.2.2 RAM smybol(393.2.3 RAM RTL(403.2.4 RAM 源代码(403.2.5 RAM 测试代码(403.2.6 RAM 仿真波形(423.3 ROM (423.3.1 ROM的介绍(423.3.3 ROM的高阻化处理(423.4 I/O模块(433.4.1 I/O模块源代码(433.4.2 I/O模块smybol(443.5 CPU外围模块连接电路原理图(443.6 烧录到FPGA上(45第四章:CPU功能验证(454.1 CPU寻址方式和指令系统(454.2 HLT指令验证(464.3 SKZ指令验证(464.4 ADD指令验证(474.5 AND指令验证(474.6 LDA、STO、JMP指令验证(47第五章:总结(48参考文献: (48第一章:RISC_CPU概述1.1课题的由来和设计环境介绍在本设计课程中,我们通过自己动脑筋,设计出CPU的软核和固核。
数字系统设计与VerilogHDL第三版课程设计
![数字系统设计与VerilogHDL第三版课程设计](https://img.taocdn.com/s3/m/fde382152e60ddccda38376baf1ffc4ffe47e2b8.png)
数字系统设计与VerilogHDL第三版课程设计一、课程设计背景数字系统设计与VerilogHDL第三版是一本经典的数字电路教材,深入浅出地介绍了数字系统设计理论和Verilog语言的基础知识。
本次课程设计旨在通过对该教材的学习和实践,提高学生数字电路设计和Verilog编程的能力,培养其解决实际问题的能力。
二、课程设计目标本次课程设计的目标包括:1.熟悉数字系统设计基本理论;2.掌握数字系统设计中常用的元器件和接口;3.熟悉VerilogHDL编程语言;4.掌握VerilogHDL的语法和数据类型;5.能够使用VerilogHDL设计数字电路;6.能够使用FPGA开发板进行数字系统设计;7.能够完成一定的数字系统设计实践。
三、课程设计内容本次课程设计主要包括以下内容:1. 数字系统设计基础理论本部分内容主要介绍数字系统设计的基本理论,包括数字逻辑门电路和布尔代数、组合逻辑电路和时序逻辑电路、状态机以及数字系统的基本设计流程等。
2. VerilogHDL编程基础本部分内容主要介绍VerilogHDL编程语言的基础知识,包括VerilogHDL的数据类型、运算符、模块和端口以及常用的VerilogHDL语句等。
3. VerilogHDL应用实践本部分内容主要通过案例实践,介绍如何使用VerilogHDL进行数字电路设计,包括基础逻辑门电路、复杂逻辑电路、时序逻辑电路和状态机的设计。
4. FPGA开发板应用实践本部分内容主要介绍FPGA开发板的基本概念以及如何使用FPGA开发板进行数字系统设计,包括如何使用Xilinx Vivado软件进行FPGA设计、FPGA的时序设计等。
5. 数字系统设计实践本部分内容主要为学生提供数字系统设计实践的机会,让学生根据自己的兴趣和需求,设计并实现一个数字系统。
四、课程设计过程本次课程设计分为以下步骤:1.学习数字系统设计和VerilogHDL编程基础知识;2.结合教材和案例实践,设计并实现数字电路;3.使用FPGA开发板进行数字系统设计实践;4.完成数字系统设计实践,撰写课程设计报告。
数字系统设计与VerilogHDL课程设计
![数字系统设计与VerilogHDL课程设计](https://img.taocdn.com/s3/m/631c63ed29ea81c758f5f61fb7360b4c2e3f2a80.png)
数字系统设计与VerilogHDL课程设计一、课程设计背景数字系统设计和VerilogHDL是计算机科学与技术专业中比较重要的课程之一。
在该课程中,学生将学习到数字系统的设计和实现过程,以及VerilogHDL语言的应用和编写。
本课程设计旨在让学生通过实践,巩固并深化所学知识,提高其实际运用能力,并帮助学生更好地理解数字系统设计和VerilogHDL的重要性。
二、课程设计目标与要求1. 课程设计目标本课程设计主要目标是让学生了解数字系统设计和VerilogHDL的工作原理和实现方法,并通过实践进行巩固,提高学生的动手能力,为日后从事该领域的工作做好充分的准备。
2. 课程设计要求本课程设计要求学生能够在充分理解了数字系统设计和VerilogHDL的基本原理和方法后,进行硬件电路图、程序代码的设计和仿真。
同时,学生需要自主完成以下任务:1.学习数字系统设计和VerilogHDL的基本知识。
2.设计并仿真一个简单的多功能数字系统,包括至少一个输入和一个输出设备,以及多个存储器(SRAM、DRAM、ROM等都可以)。
3.使用VerilogHDL语言设计实现一个几位数的计算器。
4.完成个人或小组课程设计报告,包括设计过程中的心得、体会等内容。
三、课程设计流程1. 学习数字系统设计和VerilogHDL的基本知识数字系统设计和VerilogHDL的基本知识包括数字系统的基本概念、数字信号处理、电路设计和VerilogHDL的基本语法和程序设计方法等。
学生可以通过阅读相关教材和参考资料来学习这些知识。
2. 设计多功能数字系统在完成学习后,学生可以开始设计自己的多功能数字系统。
该系统应该包括输入、输出、存储器等组件,并应该考虑到系统的稳定性、处理速度、数据存储和传输等方面的问题。
设计的过程中还需注意电路连接、时序控制、设计优化等方面,确保数字系统的高效功能和性能。
3. 设计计算器在完成多功能数字系统的设计后,学生可以进一步使用VerilogHDL语言,编写程序设计一个几位数的计算器。
数字逻辑与数字系统设计-基于ProteusVSM和VerilogHDL教学设计
![数字逻辑与数字系统设计-基于ProteusVSM和VerilogHDL教学设计](https://img.taocdn.com/s3/m/b9d11c28a31614791711cc7931b765ce04087a78.png)
数字逻辑与数字系统设计-基于ProteusVSM和VerilogHDL教学设计前言数字逻辑与数字系统设计是计算机科学中的重要基础课程,它涉及了数字电路、计算机体系结构、嵌入式系统等多个方面,对学生的计算机能力培养具有重要的作用。
本文将介绍一种基于ProteusVSM和VerilogHDL的数字逻辑与数字系统设计教学设计,旨在帮助教师更好地进行教学工作。
ProteusVSM介绍Proteus Virtual System Modelling(ProteusVSM)是一种广泛应用于电子系统测试和仿真的集成设计环境。
其具备丰富的模拟分析、虚拟调试和自动布线等功能,可有效提高数字电路的设计效率。
本教学设计将充分利用ProteusVSM的优势,帮助学生更好地理解和设计数字电路。
VerilogHDL介绍Verilog Hardware Description Language(Verilog HDL)是一种硬件描述语言,也是现今广泛应用于数字电路设计和验证的语言之一。
本教学设计将基于VerilogHDL开展课程教学,强调数字系统设计方法和技术,帮助学生掌握数字电路设计和实现的一般流程。
教学设计本教学设计主要针对数字逻辑与数字系统设计课程的教学工作展开,具体分为以下步骤:1. 理论讲授(1)数字电路基础知识数字电路概念、逻辑代数和布尔代数、基础逻辑门等。
(2)数字系统设计方法状态转换图、状态表、状态方程、逻辑电路图等。
(3)数字系统测试与计时分析组合逻辑测试、时序逻辑测试、逻辑时序分析等。
2. 实验实践(1)单片机主板设计实验构建单片机主板、实现LED闪烁等实验内容。
(2)时序逻辑设计实验基于VerilogHDL进行时序逻辑设计、实现计数器、定时器等实验内容。
(3)组合逻辑设计实验基于VerilogHDL进行组合逻辑设计、实现加法器、减法器等实验内容。
3. 课程总结对本课程进行总结,强调知识点的重要性和实际应用价值,激发学生对数字系统设计技术的兴趣和热情。
数字系统设计与VerilogHDL第四版课程设计
![数字系统设计与VerilogHDL第四版课程设计](https://img.taocdn.com/s3/m/01455e4726284b73f242336c1eb91a37f11132f7.png)
数字系统设计与VerilogHDL第四版课程设计1. 概述数字系统设计与VerilogHDL第四版是数字系统设计方面的经典教材,本课程设计以此为指导,通过对数字系统的设计和VerilogHDL的学习,加深学生对数字系统的认知和理解,掌握一定的数字系统设计和VerilogHDL的编程能力。
2. 课程设计内容课程设计的主要内容是数字系统设计和VerilogHDL,其中包括以下几个方面:2.1 数字系统设计数字系统设计是计算机科学和电气工程领域中的核心课程,其原理、方法和技术在广泛的领域中得到了应用。
本次课程设计主要针对数字系统的设计理论进行研究和应用,包括数字系统的基本概念、数字系统的设计方法、数字系统的实现等。
2.2 VerilogHDLVerilogHDL是一种硬件描述语言,常用于数字电路的设计和验证。
本次课程设计的另一个重点是学习VerilogHDL的语法和规则,掌握VerilogHDL的基本编程能力,能够使用VerilogHDL设计并实现数字电路的各种功能。
2.3 课程设计任务针对课程设计的内容,我们将学生分为若干个小组,每个小组设计一个数字电路,并使用VerilogHDL对其进行描述和实现。
课程设计具体包括以下任务:•确定数字电路设计的主题和功能•设计数字电路的逻辑模型和信号流图•使用VerilogHDL实现数字电路的各个部分•对设计的数字电路进行仿真和测试•优化数字电路的性能和可靠性3. 课程设计评价本次课程设计的评价主要考虑以下几个方面:3.1 设计方案的创新性和实用性设计方案的创新性和实用性是评价设计方案的重要指标。
学生们要根据实际需求和现有技术,提出有价值的设计方案,并且能够实现。
3.2 VerilogHDL的使用情况VerilogHDL的使用情况是评价学生的编程能力的主要指标。
学生们需要掌握VerilogHDL的基本语法和规则,熟练地运用VerilogHDL进行编程实现。
3.3 数字电路的性能和可靠性数字电路的性能和可靠性是评价设计方案的另一个重要指标。
《数字系统设计与Verilog HDL》教学大纲
![《数字系统设计与Verilog HDL》教学大纲](https://img.taocdn.com/s3/m/0f50854ff90f76c660371a44.png)
《数字系统设计与Verilog HDL》教学大纲课程中文名称: 数字系统设计与Verilog HDL 课程英文名称: Digital system design with Verilog HDL课程代码: 学时/实践或实验/学分:40/8/2.5课程类别: 课程性质: 选修课适用专业:执笔人: 审定人:审批人:一、教学目标教学目标是使学生了解掌握EDA技术的基础知识、可编程逻辑器件的基本结构、硬件描述语言的语法、编程方法以及相关开发软件的使用方法。
重点掌握:PLD器件的结构和开发流程、开发软件的使用方法、Verilog HDL语言的基本语法和利用Verilog HDL语言建模、仿真和综合的设计复杂数字逻辑电路与系统设计的方法和技术。
目标1:了解EDA技术的发展概况,掌握EDA技术的基本概念及相关的基础知识,掌握数字系统设计的设计方法和流程。
了解可编程逻辑器件的分类,掌握可编程逻辑器件的基本结构掌握,掌握CPLD及FPGA器件的基本结构掌握。
目标2:掌握Verilog HDL的语言要素、各种语句以及设计方法等基础知识;掌握Verilog HDL 模块和测试模块的基本结构,能够利用Verilog HDL语言对数字电路进行建模。
目标3:掌握Verilog HDL的三种描述方式;掌握层次设计的方法以及一些设计技巧;并掌握利用有限状态机对数字电路进行建模的方式。
目标4:掌握开发软件及仿真软件的使用流程及方法,能够对设计文件进行仿真验证。
二、课程教学目标与毕业要求关系矩阵注:用☆☆☆、☆☆、☆分别表示教学目标对毕业要求的贡献度为强、中、弱。
三、教学内容和学时分配(32学时)《数字系统设计与Verilog HDL》在理论教学方面侧重于PLD基本原理、Verilog HDL语法要素和行为语句、Verilog HDL阻塞与非阻塞赋值、Verilog HDL有限状态机设计和数字电路设计。
实验教学方面侧重于利用现代 EDA设计流程、软件仿真应用、仿真测试程序设计、层次设计。
数字系统设计与VerilogHDL第五版教学设计
![数字系统设计与VerilogHDL第五版教学设计](https://img.taocdn.com/s3/m/85edc4efc0c708a1284ac850ad02de80d4d80692.png)
数字系统设计与VerilogHDL第五版教学设计数字系统设计与VerilogHDL是计算机专业的一门重要课程。
在本教学设计中,我们将以第五版数字系统设计与VerilogHDL为教材,为学生提供全面深入的理论学习和实践训练,帮助他们掌握数字系统设计的基本概念、数制转换、逻辑代数、组合逻辑设计和时序逻辑设计,并能够运用VerilogHDL进行数字系统的设计和仿真。
课程目标本课程的主要目标是让学生:1.熟练掌握数字系统设计的基本概念和原理,了解数制转换、逻辑代数、组合逻辑设计和时序逻辑设计等知识点。
2.熟悉VerilogHDL的语法和使用,能够进行数字系统的设计和仿真。
3.具备分析和解决数字系统设计中常见问题的能力,能够进行数字系统的优化和调试。
4.掌握团队协作和沟通能力,能够与他人合作完成数字系统设计的任务。
教学内容与安排教学内容本课程的教学内容包括以下几个部分:1.数字系统设计的基本概念和原理。
2.数制转换、逻辑代数、组合逻辑设计和时序逻辑设计的理论与实践。
3.VerilogHDL的语法和使用,数字系统的设计和仿真。
4.数字系统设计的优化和调试。
5.案例分析与实践项目。
教学安排本课程将采用理论课与实验课相结合的方式进行教学,具体安排如下:1.第1-2周:课程介绍,数字系统设计的基本概念和原理。
2.第3-5周:数制转换、逻辑代数、组合逻辑设计和时序逻辑设计的理论与实践。
3.第6-12周:VerilogHDL的语法和使用,数字系统的设计和仿真。
4.第13-14周:数字系统设计的优化和调试。
5.第15-16周:案例分析与实践项目。
教学方法本课程将采用以下教学方法:1.理论讲解:通过课堂讲解、课件展示等方式,向学生介绍数字系统设计的相关知识点和原理。
2.实验操作:通过实验课方式,让学生亲自操作数字系统设计软件,进行数字系统的设计和仿真,加深对知识点的理解和掌握。
3.课程设计:通过案例分析和实践项目,让学生综合运用所学知识,进行数字系统设计的设计和优化,培养实际操作能力和团队协作能力。
数字系统设计与VerilogHDL(第5版)教案ver1 (13)[36页]
![数字系统设计与VerilogHDL(第5版)教案ver1 (13)[36页]](https://img.taocdn.com/s3/m/495dcab3960590c69ec3767b.png)
end
end
endmodule
n为5反馈系数Ci为(45)8和(57)8的Gold码序列发生器仿真波形图
13.3 CRC校验码
CRC码结构
【例13.4】 CRC编码
module crc(crc_reg,crc,d,calc,init,d_valid,clk,reset); input calc,init,d_valid,clk,reset; input[7:0] d; output reg[15:0] crc_reg; output reg[7:0] crc; wire[15:0] next_crc; always @(posedge clk,posedge reset)
shift_reg[4:1]<=shift_reg[3:0]; end
2'b01: begin
//反馈系数Ci为(67)8
shift_reg[0]<=shift_reg[0] ^ shift_reg[2] ^ shift_reg[3] ^ shift_reg[4];
shift_reg[4:1]<=shift_reg[3:0]; end
//反馈系数Ci为(45)8
shift_reg1[4:1]<=shift_reg1[3:0];
shift_reg2[0]<=shift_reg2[1] ^ shift_reg2[2] ^
shift_reg2[3] ^ shift_reg2[4];
//反馈系数Ci为(57)8
shift_reg2[4:1]<=shift_reg2[3:0];
end endmodule
【例13.2】 n为5反馈系数Ci分别为(45)8,(67)8,(75)8的m序列发生器
数字系统设计与verilog_HDL课程设计--实用多功能数字钟
![数字系统设计与verilog_HDL课程设计--实用多功能数字钟](https://img.taocdn.com/s3/m/f6218b75011ca300a6c39034.png)
数字系统设计与verilogHDL课程设计设计题目:实用多功能数字钟专业:电子信息科学与技术摘要本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。
单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。
关键字:多功能数字钟、Verilog、模块、调试、仿真、功能目录1.课程设计的目的及任务............................................................. 错误!未定义书签。
1.1 课程设计的目的 (4)1.2 课程设计的任务与要求 (4)2.课程设计思路及其原理 (4)3.QuartusII软件的应用 (5)3.1工程建立及存盘 (5)3.2工程项目的编译 (6)3.3时序仿真 (6)4.分模块设计、调试、仿真与结果分析 (7)4.1 clk50mto1时钟分频模块 (7)4.2 adder加法器模块 (7)4.3 hexcounter16 进制计数器模块 (8)4.4 counter_time 计时模块 (8)4.5 alarm闹铃模块 (9)4.6 sound_ddd嘀嘀嘀闹铃声模块 (9)4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (10)4.8 alarm_time闹钟时间设定模块 (10)4.9 bitsel将输出解码成时分秒选择模块 (11)4.10 switch去抖模块 (11)4.11 led译码显示模块 (12)4.12 clock顶层模块 (12)5.实验总结 (14)5.1调试中遇到的问题及解决的方法 (14)5.2实验中积累的经验 (14)5.3心得体会 (14)6.参考文献 (15)1.1 课程设计的目的通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的创新精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字系统设计与v e r i l o g H D L课程设计设计题目:实用多功能数字钟专业:电子信息科学与技术班级:0313410学号:姓名:杨存智指导老师:黄双林摘要本课程设计利用QuartusII软件VerilogVHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。
单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。
关键字:多功能数字钟、Verilog、模块、调试、仿真、功能目录课程设计的目的通过课程设计的锻炼,要求学生掌握Verilog HDL语言的一般设计方法,掌握Verilog HDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的创新精神。
掌握现代数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
课程设计的任务与要求用Verilog HDL语言设计一个多功能的数字钟,具有下述功能:(1)计时功能。
包括时、分、秒的计时;(2)定时与闹钟功能:能在设定的时间发出闹铃音;(3)校时功能。
对时、分和秒能手动调整以校准时间;(4)整点报时功能;每逢整点,产生“嘀嘀嘀嘀一嘟”四短一长的报时音。
2.课程设计思路及其原理数字计时器要实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能,所有功能都基于计时功能。
因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。
得到1hz脉冲后,要产生计时模块,必须需要加法器来进行加法,因此需要一个全加器,此实验中设计一个八位全加器来满足要求。
数字电路设计中,皆采用二进制加法,为实现实验中时分秒的最大功能,本实验中采用十六进制加法器,再进行BCD码进行转换来实现正常时钟显示。
为产生秒位,设计一个模60计数器,利用加法器对1HZ的脉冲进行秒计数,产生秒位;为产生分位,通过秒位的进位产生分计数脉冲,分位也由模60计数器构成;为产生时位,用一个模24计数器对分位的进位脉冲进行计数。
整个数字计时器的计数部分共包括六位:时十位、时个位、分十位、分个位、秒十位和秒个位。
基本的计时模块完成之后,整点报时、清零、校时、LED显示、闹铃模块可以相互实现,其中,闹铃模块与计时模块的显示相互并行。
清零功能是通过控制计数器清零端的电平高低来实现的。
只需使清零开关按下时各计数器的清零端均可靠接入有效电平(本实验中是低电平),而清零开关断开时各清零端均接入无效电平即可。
保持功能是通过逻辑门控制秒计数器输入端的1Hz脉冲实现的。
正常情况下,开关不影响脉冲输入即秒正常计数,当按下开关后,使脉冲无法进入计数端,从而实现计时保持功能。
要进行闹钟功能,是否进行闹钟模块nowmode,当选择00表示即使模块,10闹钟模式,01手动调整模式。
当选择闹铃模块之后,是否是整点报时闹铃还是闹钟闹铃,又需要设置一个选择模块alarmout,当00模式时不开启闹铃,01进行闹铃模式,10进行整点报时模块。
整点报时是本实验中的sound_ddd_du模块(详见附录中程序清单),sound_ddd_du模块与计时模块有点类似,但整点报时模块中不要分时分秒计数,可直接利用1hz的分频计数至时位进位时的数值,开启ddd_du闹铃。
闹钟报时功能。
在计时电路走到设定的时间时闹铃报时功能会被启动,通过与ddd产生电路进行逻辑组合,使得在达到闹铃时,发出ddd。
闹铃模块和校正模块中,需要选择闹铃调时Alarmode还是Checkmode校时模块,因此需要利用bitsel 模块进行选择。
闹钟只设定时和分,基本模块Alarmode与正常计时电路里的校时校分电路相同。
本实验中为节省按键,闹钟时间调节键复用正常调时的校时校分开关,为使设定闹铃与正常计时中调节时间按键互不影响,额外用一个闹钟使能键,按下该键后进入闹钟设定界面,此时校时校分开关用于调节闹钟时间,对正常计时没有影响;恢复使能键后校分校时键用于对数字钟进行时间调节,对设定的闹钟时间没有影响。
校分校时checkmode功能基本原理是通过逻辑门电路控制分计数器的计数脉冲,当校分校时开关断开时,计数脉冲由低位计数器提供;当按下校分校时开通时,既可以手动触发出发式开关给进位脉冲,也可以有恒定的1Hz脉冲提供恒定的进位信号,计数器在此脉冲驱动下可快速计数。
为实现可靠调时,采用防抖动开关(由D触发器实现)克服开关接通或断开过程中产生的一串脉冲式振动。
当全部功能实现之后,要完成数字钟的全部输出,需要一个LED显示模块。
最后,将所有程序进行调试,在clock顶层模块中可以实现全部功能。
3.QuartusII软件的应用工程建立及存盘1.打开QuartusⅡ,单击“File”菜单,选择File→NewProjectWizard,对话框如下:分别输入项目的工作路径、项目名和实体名,单击Finish。
图2.单击“File”菜单,选择New,弹出小对话框,双击“VHDLFile",即选中了文本编辑方式。
在出现的“”文本编辑窗中键入VHDL程序,输入完毕后,选择File→SaveAs,即出现“SaveAs”对话框。
选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。
3.建立工程项目,在保存VHDL文件时会弹出是否建立项目的小窗口,点击“Yes”确定。
即出现建立工程项目的导航窗口,点击“Next”,最后在出现的屏幕中分别键入新项目的工作路径、项目名和实体名。
注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDL程序文本存盘的文件名必须与文件的实体名一致,输入后,单击“Finish”按钮。
工程项目的编译单击工具条上的编译符号开始编译,并随着进度不断变化屏幕,编译成功,完成后的屏幕如图所示:图时序仿真建立波形文件:选择File→New,在New窗中选中“OtherFile”标签。
在出现的屏幕中选择“VectorWaveformFile”项出现一新的屏幕,在assignment中选择seting,将timing选择function功能仿真,再在processing中建立网格。
在出现的新屏幕中,双击“Name”下方的空白处,弹出“InsertNodorBus”对话框,单击该对话框的“NodeFinder”。
在屏幕中的Filter中选择Pins,单击“List”。
而后,单击“>>”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。
然后单击屏幕右上脚的“OK”。
在出现的小屏幕上单击“OK”。
设定仿真时间宽度。
选择Edit→Endtime,选项,在Endtime选择窗中选择适当的仿真时间域,以便有足够长的观察时间。
波形文件存盘。
选择File→Saveas选项,直接存盘即可。
运行仿真器。
在菜单中选择项,直到出现,仿真结束。
图 编辑过程的仿真波形4.分模块设计、调试、仿真与结果分析时钟分频模块为实验观察方便,在单个模块的显示中,本处clock 输入为1ps 周期信号,得到clk50to1输出结果如图所示,完全符合实验要求。
图时钟分频模块 加法器模块本实验中adder 采用8位全加器,out=in1+in2,带进位。
图加法器模块实验中数字钟时分秒最大计数为59,带进位8位全加器完全符合实验要求,如图所示,77加62等于139,76加上93等于169。
进制计数器模块经过分频后,输出脉冲频率为1hz ,即周期为1s ,通过16进制计数器,将其转化为16进制数字。
16进制采用4位二进制,因此寄存器长度为四位。
当set 高电平有效时,将数据送给counter 计数器,carrtbit 清零,如若counter 计数器达到16进制中max 即15时,counter 清零,而carrtbit 置高电平有效。
如若set 一直处于低电平,则counter 计数器自加一进行计数,carrtbit 清零。
图 16进制计数器模块调试试验结果如图所示,set 一直处于低电平状态下,当datout 计数置3后再加一即清零,而carrybit 置一,再来一个脉冲上升沿又回来置数,符合十六进制计数器。
计时模块时钟能够产生时间前提是对秒脉冲计数产生形成的,每个计时器的时钟,由前级进位和自增脉冲相加得到,为了形成时分秒,需要对秒进位信号进行计数从而产生分,对分进位信号进行计数产生时信号。
秒和分均为60进制,时为24进制,所以需要有模60和模24计数器。
计时示意如下:秒个位逢9后,再来一个脉冲即向秒十位加一,秒个位清0,当秒十位达到5、秒个位9时,再加一个脉冲后,向分个位加1,秒清零。
同理,分位达到59后向时个位进一,分秒全部清零。
时为24进制,当时分秒为23:59:59时,当下一个脉冲上升沿到来时,全部清零。
1Hz 秒个位 秒十位 分个位 分个位 时个位 时个位图计时模块如图所示,第一幅图为秒计数器计数至59后,向分计数器进位清零重新计数。
第二个跳跃是分59向时进位。
第二幅图中,最后一个跳跃是时分秒全部清零。
根据时间轴的间断,可以观察到此现象。
闹铃模块闹钟模式是否开启,需要外部信号输入,让数字钟进入闹铃界面,还要分别是整点报时还是闹铃功能,且要保证在设定闹铃时数字钟能够正常工作。
这就要求在闹铃和数字钟的走时功能互不影响。
本实验用alarmon作为闹钟设定使能键。
00时,正常计时;01进入闹钟设定状态。
本闹铃模块另外含有简单计时功能,这样与计时模块不产生冲突,当时间达到整点时,开启整点报时闹铃模块,当达到闹钟时间,进入闹钟闹铃模块。
其他全部置零,计时模块。
图闹铃模块如图所示,当alarmon选择00时,闹铃模块进入计数模块,没有闹铃输出。
接着输入为01,闹钟铃声输出,进入闹钟闹铃模式;输入为10时,输出为嘀嘀嘀读,为整点报时铃声的输出。
嘀嘀嘀闹铃声模块由前面闹铃模块选择闹铃声后,直接跳入到此闹钟闹铃嘀嘀嘀模块,嘀嘀嘀铃声分位三段,且设置不同周期,当mscount等于第一声间距乘以3加上二声间距乘以2加上三声之后时间间距减1时,为闹铃的最大周期,清零。