数字系统设计
高级数字系统设计

高级数字系统设计数字系统已经成为现代社会中不可或缺的一部分,广泛应用于通信、计算机、工业自动化等领域。
随着科技的不断发展,人们对数字系统的要求也变得越来越高。
高级数字系统设计是为了满足这一需求而产生的,它在传统数字系统设计的基础上进行了进一步的优化和改进,以提高系统性能、降低功耗和增强可重构性。
1. 引言高级数字系统设计在数字系统领域具有重要的地位和作用。
本文将介绍高级数字系统设计的基本概念、原理和应用。
2. 高级数字系统设计的基本概念2.1 可编程逻辑器件(PLD)和可编程门阵列(GAL)可编程逻辑器件和可编程门阵列是高级数字系统设计中常用的硬件实现工具。
它们可以根据用户的要求进行编程,实现不同的逻辑功能。
2.2 时序分析与优化时序分析与优化是高级数字系统设计中的关键技术之一。
通过对时序进行准确的分析和优化,可以提高系统的稳定性和性能。
2.3 高级综合技术高级综合技术是将高级程序设计语言(如C、C++等)转化为硬件逻辑的过程。
它能够提高设计效率,缩短设计周期。
3. 高级数字系统设计的原理3.1 并行性与流水线技术并行性和流水线技术是高级数字系统设计中的重要原理。
通过合理地设计并行结构和流水线,可以提高系统的运行速度和效率。
3.2 分布式处理与多核技术分布式处理与多核技术是高级数字系统设计中常用的原理。
它们可以将任务分配给多个处理核心并行处理,提高系统的处理能力和性能。
3.3 管脚分组与布线规划管脚分组和布线规划是高级数字系统设计中的重要原理。
通过合理地进行管脚分组和布线规划,可以减少信号干扰,提高系统的可靠性和可重构性。
4. 高级数字系统设计的应用4.1 通信系统高级数字系统设计在通信系统中具有广泛的应用。
通过合理地设计和优化,可以提高通信系统的传输速率和数据处理能力。
4.2 计算机系统高级数字系统设计在计算机系统中也具有重要的应用。
它可以提高计算机的运算速度和存储容量,提升系统的整体性能。
4.3 工业自动化高级数字系统设计在工业自动化领域的应用也逐渐增多。
现代数字系统设计方法和流程

现代数字系统的设计方法专业:电力电子与电力传动学号:212012*********姓名:刘滔摘要随着微电子技术和计算机技术的不断发展,在涉及通信、国防、航天、工业自动化、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升,它已成为当今电子技术发展的前沿之一。
现代社会电子产品更新换代的速度越来越快,传统的自下而上(Bottom-Up)的设计方法越来越适应不了这种挑战。
随着可编程逻辑器件集成规模的迅速扩大,自身功能的不断完善,以及计算机辅助设计技术的不断发展,在现代电子系统设计领域,EDA(Electronic Design Automation)技术便引起了人们的极大关注。
设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述。
相应的FPGA/CPLD器件,在EDA工具的帮助下,就可以得到最后的设计结果。
本文首先阐述了EDA技术的基本概念、发展过程和基本特征,最后着重分析EDA技术在两个不同层次上的工作流程,即电路级设计和系统级设计,引入了一种自顶向下的高层次电子设计方法。
关键词:设计方法电子系统设计EDA一、现代数字系统设计的概述EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
EDA的定义有广义和狭义之分,广义定义EDA包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试故障诊断自动化等。
狭义定义的EDA就是电子设计自动化。
EDA技术主要有四个方面:1、可编程逻辑器件,即应用EDA技术完成电子系统设计的载体;2、硬件描述语言(VHDL 或者 Verilog)。
它用来描述系统的结构和功能,是EDA的主要表达手段;3、配套的软件工具。
它用来完成电子系统的智能化设计;4、实验开发系统。
在整个EDA设计电子系统的过程中,实验开发系统是实现可编程器件下载和验证的工具,现代EDA技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
数字系统设计知识点

数字系统设计知识点数字系统设计是计算机工程和电子工程中的重要内容,涵盖了多种关键概念和技术。
本文将介绍数字系统设计的一些基础知识点,包括数字系统的基本原理、数字电路的构建和设计、以及数字系统中常见的编码和调制技术。
一、数字系统的基本原理数字系统是由数字电路组成的,其中的信息以二进制形式表示。
数字电路由数字逻辑门组成,可以执行布尔运算。
数字系统的基本原理包括以下几个关键概念:1. 二进制系统:数字系统采用二进制表示,即使用0和1来表示逻辑状态。
二进制是一种计数系统,它只使用两个数字来表示所有的值。
2. 布尔代数:布尔代数是描述和操作逻辑关系的一种数学工具。
它基于三个基本运算:与、或和非。
布尔代数可以用于设计和分析数字逻辑电路。
3. 逻辑门:逻辑门是数字电路的基本构件,用于执行逻辑运算。
常见的逻辑门包括与门、或门、非门等。
通过组合逻辑门可以构建复杂的数字电路。
二、数字电路的构建和设计数字电路是数字系统的基础,它由逻辑门和触发器等元件组成。
数字电路的构建和设计需要考虑以下几个因素:1. 逻辑门的组合与实现:通过组合不同类型的逻辑门可以实现多种逻辑功能。
例如,与门和或门的组合可以实现任意布尔函数。
设计者需要根据具体需求选择适当的逻辑门组合。
2. 状态机设计:状态机是一种具有离散状态的数字电路。
它由状态寄存器、组合逻辑和输出逻辑组成。
设计者需要根据系统需求定义状态和转移条件,然后选择适当的触发器和逻辑门实现状态机。
3. 模时序系统设计:模时序系统是一种具有时序行为的数字电路。
它由触发器和组合逻辑构成,可以实现时序逻辑功能。
设计者需要考虑时钟信号、触发器类型和时序逻辑的实现方式。
三、编码和调制技术在数字系统设计中,编码和调制是常用的技术,用于将信息从一种形式转换成另一种形式。
1. 数字编码:数字编码用于将数字或字符等信息转换为二进制形式。
常见的数字编码包括BCD码、格雷码和ASCII码等。
不同的编码方式可以适用于不同的应用场景。
数字系统设计.pdf

PLD设计——CPLD与FPGA的区别
规模
CPLD规模一般比FPGA小,最多512个宏单元;FPGA则可以实现单片 1000万门。
速度
CPLD的速度可以比FPGA更高,其连线的延时固定,更适合做高速的应 用;FPGA的互连线为多段,延时不确定。
逻辑特点 CPLD适合做逻辑密集型的应用,FPGA适合做数据密集型的应用。 编程方式
ALTERA
XILINX
FPGA/CPLD生产商
ispLSI系列:1K、2K、3K、5K、8K ispLSI1016 、ispLSI2032、 ispLSI1032E、ispLSI3256A MACH系列 ispPAC系列:
LATTICE VANTIS (AMD)
CPLD
其他PLD公司: ACTEL公司: ACT1/2/3、40MX ATMEL公司:ATF1500AS系列、40MX CYPRESS公司 QUIKLOGIC公司
数字系统分类
数字系统本身实现的方法很多,一般来说,可以分为 以下几种方法: PLD(可编程逻辑器件) MCU(单片机) DSP(数字信号处理器) Embedded System(嵌入式系统) 以上几种设计方法的应用场合不同,设计方法也大 不相同,应该根据不同的应用场合、成本和设计的 难度来决定使用合适的设计方法。
SO MUCH IC!
FPGA CPLD
PLD设计——PLD设计的流程
设计输入
原理图 硬件设计语言
功能仿真
验证逻辑是否正确
综合
将原理图或者硬件描述语言翻译为网表。
时序仿真
加载器件延时文件后的仿真,验证在器 件上实现后的实际性能。
不同数字系统的应用场合(4)
Embedded System(嵌入式系统)
verilog数字系统设计教程

verilog数字系统设计教程Verilog数字系统设计教程作者:XXX引言:数字系统设计是现代电子工程中非常重要的一部分。
Verilog作为一种硬件描述语言,提供了一种方便且专业的方法来设计和描述数字系统。
本教程旨在为初学者提供关于Verilog数字系统设计的详细介绍和指导。
1. Verilog简介Verilog作为一种硬件描述语言,用于描述数字系统的功能、结构和时序行为。
它类似于C语言,但更专注于硬件级别。
Verilog可以用于设计各种数字系统,例如处理器、嵌入式系统、通信设备等。
2. Verilog基本语法2.1 模块定义Verilog的基本单位是模块。
模块是数字系统的基本组成部分,可以看作是一个独立的功能单元。
模块可以包含输入、输出、内部信号以及其它子模块等。
2.2 信号声明在Verilog中,可以声明各种类型的信号,包括输入信号、输出信号和内部信号等。
信号声明定义了信号的类型、宽度和方向。
3. Verilog建模3.1 组合逻辑建模组合逻辑是数字系统中最基本的部分。
Verilog提供了各种组合逻辑建模的方法,包括逻辑运算、选择结构和多路复用器等。
3.2 时序逻辑建模时序逻辑是数字系统中需要考虑时序关系的部分。
Verilog提供了时序逻辑建模的方法,包括触发器、计数器和时序控制等。
4. Verilog仿真4.1 仿真器介绍仿真器是用于验证数字系统设计的工具。
Verilog可以与各种仿真器配合使用,用于验证设计的正确性和性能。
4.2 仿真流程仿真流程包括编写测试平台和测试用例、编译和仿真等步骤。
本节将介绍基本的仿真流程和相关技巧。
5. Verilog综合5.1 综合概述综合是将Verilog代码转换为逻辑门级描述的过程。
综合器通过将Verilog代码映射到实际的硬件库中,生成能够实现指定功能的逻辑电路。
5.2 综合流程综合流程包括综合前的优化和综合本身两个阶段。
本节将介绍综合的基本流程和主要考虑因素。
数字系统设计及实验实验报告

数字系统设计及实验实验报告一、实验目的数字系统设计及实验课程旨在让我们深入理解数字逻辑的基本概念和原理,掌握数字系统的设计方法和实现技术。
通过实验,我们能够将理论知识应用于实际,提高解决问题的能力和实践动手能力。
本次实验的具体目的包括:1、熟悉数字电路的基本逻辑门、组合逻辑电路和时序逻辑电路的设计方法。
2、掌握使用硬件描述语言(如 Verilog 或 VHDL)进行数字系统建模和设计。
3、学会使用相关的电子设计自动化(EDA)工具进行电路的仿真、综合和实现。
4、培养团队合作精神和工程实践能力,提高解决实际问题的综合素质。
二、实验设备和工具1、计算机:用于编写代码、进行仿真和综合。
2、 EDA 软件:如 Quartus II、ModelSim 等。
3、实验开发板:提供硬件平台进行电路的下载和测试。
4、数字万用表、示波器等测量仪器:用于检测电路的性能和信号。
三、实验内容1、基本逻辑门电路的设计与实现设计并实现与门、或门、非门、与非门、或非门和异或门等基本逻辑门电路。
使用 EDA 工具进行仿真,验证逻辑功能的正确性。
在实验开发板上下载并测试实际电路。
2、组合逻辑电路的设计与实现设计一个 4 位加法器,实现两个 4 位二进制数的相加。
设计一个编码器和译码器,实现数字信号的编码和解码。
设计一个数据选择器,根据控制信号选择不同的输入数据。
3、时序逻辑电路的设计与实现设计一个同步计数器,实现模 10 计数功能。
设计一个移位寄存器,实现数据的移位存储功能。
设计一个有限状态机(FSM),实现简单的状态转换和控制逻辑。
四、实验步骤1、设计方案的确定根据实验要求,分析问题,确定电路的功能和性能指标。
选择合适的逻辑器件和设计方法,制定详细的设计方案。
2、代码编写使用硬件描述语言(如 Verilog 或 VHDL)编写电路的代码。
遵循代码规范,注重代码的可读性和可维护性。
3、仿真验证在 EDA 工具中对编写的代码进行仿真,输入不同的测试向量,观察输出结果是否符合预期。
数字系统设计的基础知识

05
数字系统的测试与验证
测试策略与技术
单元测试
对数字系统的各个模块进行独立测试,确保 每个模块的功能正常。
系统测试
对整个数字系统进行测试,确保系统满足设 计要求和功能需求。
集成测试
将各个模块组合在一起进行测试,确保模块 之间的接口正常工作。
验收测试
在数字系统交付之前,对系统进行全面测试, 确保系统能够满足用户需求。
案例分析:数字钟的设计需要高精度的计时和稳定的时钟源。石英晶体振荡器的选择对数字钟的准确性 和稳定性至关重要。此外,数字钟还需要考虑功耗和尺寸,以便于在各种应用场景中实现。
案例三:数字信号处理系统的设计
01
总结词:高效灵活
02
详细描述:数字信号处理系统是一种用于处理和分析信号 的数字系统。它通常由输入预处理电路、数字信号处理器 和输出后处理电路组成。数字信号处理器执行信号的滤波 、频谱分析、去噪等处理操作。
数字系统的发展历程
电子管时代
20世纪初,电子管作为数字系统的基 本元件,实现了计算机的初步发展。
02
晶体管时代
20世纪50年代,晶体管取代电子管成 为数字系统的基本元件,推动了计算 机小型化、便携化的发展。
01
互联网时代
21世纪初,互联网技术的普及和发展, 使得数字系统在信息传输和处理方面 发挥着越来越重要的作用。
03
的计数器用于控制指令的执行顺序。
存储器
存储器是数字系统中用于存储大量二进制数据的元件。
存储器由多个存储单元组成,每个存储单元可以存储一个二进制位。
存储器可以分为随机存取存储器(RAM)和只读存储器(ROM)等类型,在计算 机和其他数字系统中有着广泛的应用,如计算机的内存和硬盘等。
fpga数字系统设计课程设计

fpga数字系统设计课程设计一、课程目标知识目标:1. 掌握FPGA数字系统设计的基本原理,理解数字系统的组成及功能;2. 学会使用硬件描述语言(HDL)进行数字电路设计和描述;3. 了解FPGA器件的结构、编程原理以及配置方法;4. 熟悉数字系统的测试与验证方法,掌握基本故障排查技巧。
技能目标:1. 能够运用所学知识,独立完成简单的数字系统设计;2. 掌握使用FPGA开发工具进行代码编写、仿真和调试;3. 学会使用示波器、逻辑分析仪等仪器进行数字电路测试与分析;4. 提高团队协作能力,学会在项目中分工合作,共同解决问题。
情感态度价值观目标:1. 培养学生对数字系统设计的兴趣,激发创新意识;2. 培养学生严谨的科学态度,养成良好的实验习惯;3. 增强学生的自信心和自主学习能力,培养面对挑战的勇气;4. 提高学生的团队合作意识,学会尊重他人,共同进步。
本课程针对高年级学生,结合学科特点,注重理论与实践相结合,旨在培养学生的实际操作能力和创新能力。
课程要求学生在掌握基本理论知识的基础上,通过实际操作,提高数字系统设计能力,为今后从事相关领域工作打下坚实基础。
课程目标的设定,既符合学生特点,又满足了教学要求,为后续教学设计和评估提供了明确的方向。
二、教学内容1. 数字系统设计基础:包括数字逻辑基础、组合逻辑设计、时序逻辑设计等,对应教材第1章至第3章内容。
- 数字逻辑基础:逻辑门、逻辑表达式、逻辑函数化简;- 组合逻辑设计:编码器、译码器、多路选择器、算术逻辑单元;- 时序逻辑设计:触发器、计数器、寄存器、状态机。
2. 硬件描述语言(HDL):以Verilog HDL为例,学习语法、数据类型、运算符、过程语句等,对应教材第4章内容。
- 语法基础:模块定义、端口声明、信号声明;- 数据类型和运算符:基本数据类型、运算符及其优先级;- 过程语句:顺序语句、并行语句、赋值语句。
3. FPGA器件结构与编程:介绍FPGA器件的结构、编程原理、配置方法等,对应教材第5章内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学自动化学院《数字系统课程设计》专业综合设计报告姓名:_________________________ 学号:专业:________________________ 实验室:组别:______________________同组人员:设计时间:年月日评定成绩: _____________________ 审阅教师:一.课程设计的目的与要求二.原理设计三.架构设计四.方案实现与测试五.分析与总结专业综合设计的目的与要求(含设计指标)主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。
红灯禁止通行;绿灯允许通行;黄 灯亮则给行驶中的车辆有时间行驶到禁行线之外。
主干道和乡村公路都安装了传感器, 检测 车辆通行情况,用于主干道的优先权控制。
设计任务与要求(1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。
(2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通 行,让乡村公路通行。
主干道最短通车时间为 25s 。
(3)当乡村公路和主干道都有车时,按主干道通车 25s ,乡村公路通车 16s 交替进行。
( 4)不论主干道情况如何,乡村公路通车最长时间为 16s 。
(5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s 时间的黄灯作为过渡。
(6)用开关代替传感器作为检测车辆是否到来的信号。
用红、绿、黄三种颜色的发光二极 管作交通灯。
要求显示时间,倒计时。
. 原理设计(或基本原理)HDL 语言,用ONEHOTI 犬态机编码表示交通灯控制器的四个状态(状态0010,状态三: 0100,状态四: 1000):设置两个外部控制条件:重置( set );乡村干道是否有车( c —— c=1 表示无车; c=0 表示有 车) 设置一个内部控制条件: 时间是否计满 ( state —— state=0 表示计数完成; state=1 表示计 数没有完成)本设计采用 Verilog: 0001,状态二: 主干道红灯,显示 5 秒;乡村干道黄灯,显示 5 秒——( 0001) 主干道红灯,显示 21 秒;乡村干道绿灯,显示 16 秒——( 0010) 主干道黄灯,显示5 秒;乡村干道红灯,显示5 秒——( 0100)主干道绿灯,显示 25 秒;乡村干道红灯,显示 30 秒——( 1000)系统流程图如下:Set=1註:mlight代表主干道红绿黄灯的亮灭,clight代表乡村干道红绿黄灯的亮灭整个描述如下:当set由0变为1时,主干道为黄灯,乡村干道为红灯,各显示5秒,此时为第一阶段,当五秒倒计时完成时,state由1变为0,进入第二阶段。
此时主干道为红灯,乡村干道为绿灯,分别显示时间为21秒和16秒,当倒计时完成,state由1变为0,进入第三阶段,或者如果此时乡村干道没有车,即c=0时,不需要倒计时完成,即state可以为1,直接进入第三阶段,此时主干道为红灯,乡村干道为黄灯,分别显示时间为五秒,倒计时完成后,进入第四阶段,此时主干道为绿灯,乡村干道为红灯,分别显示时间为25秒和30秒,如果此时乡村干道没有车,即c=0时间将会一直卡在25秒和30秒不变,直到乡村干道开始有车时才开始倒计时,并在倒计时完成后,又进入第一阶段,进入下一次的循环。
交通灯控制器框图SetClkMlight[2:0]交通灯控制器Clight[2:0]>100——绿灯010――黄灯001——红灯100——绿灯010――黄灯001——红灯主干道计数器乡村干道计数器显示显示三.方案论证(架构设计)顶层的block图n^Q a・督嗨%卩•呼骸刘❻Ik $ $ ti d rdcw Hdp- 1—-■ • L. 囁i 二=卜*.I3 7-i :.二:.M IPOi*._sRK105 幽肿- RNJM -m.'iM]- =WJ1i :和4 ;仿真波形为: i1.td : k.3Sta TmeBa:¥心 aC.Ons33U.0nsSTD.0 os4山.0站ii60.0 ns 4M.01S530.0D2iiHit* 5.di^rLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLrLr1>EEt#2 stilei __i1*3 cU d. i .抓2 I 10 ili 泓 I LJ 斗ip 12 0 cir 13 x 2 i- X 〔■_/]?_ 0 trii M r 小 m 5 X mmnrnmn门「"rnmmmc L x o ■ tA OK 2 X L 3 Q0 kL i n n 13 x ? x i x o x 3 n x 7 x & x s x o 3 x u i X 0 X ?X 9 X T X 6 X s X i nVIiiaolDngthng.fflf| ®韓如End 343.03 n£ I 湘vat设计模块组成: 分频器:获取适合的时钟信号主模块:控制各个状态的转换数码管显示模块:显示主干道和乡村干道的时间具体设计如下:1分频器(clk_in为输入时钟频率,clk_out为输出时钟频率)分频器源代码:module fenpin( clk_ in, clk_out);in put clk_in;output clk_out;reg clk_out;reg[24:0] cnter;always @(posedge clk_in)beginif (cn ter<2000000)begi n cn ter = cn ter + 1; endelse cn ter = 0;if (enter == 2000000)begi n clk_out = 'b1;e ndelse clk_out = 'b0;end en dmodule2主模块部分:输入输出说明:Set ---- 重置,set=1,交通灯开始工作C ------ 乡村干道是否有车,c=1表示无车;c=0表示有车Clk ――输入时钟信号Mlight[2..O] 主干道交通灯的亮火,100代表绿灯亮,010代表黄灯亮,001代表红灯亮Clight[2..O]-乡村干道父通灯的亮火,100代表绿灯亮,010代表黄灯亮,001代表红灯亮Mch[3..O]—主干道交通灯的咼位数字Mcl[3..O]—--主干道交通灯的低位数字Cch[3..O]—-乡村干道交通灯的高位数字-Ccl[3..O]——-乡村干道交通灯的低位数字源代码:module jiaot on gde ng(set,c,clk,mlight,clight,mch,cch,mcl,ccl);in put set,c,clk;output[2:0] mlight,clight;output[3:0] mch,mcl,cch,ccl;reg[2:0] mlight,clight;reg[3:0] mch,mcl,cch,ccl;reg[7:0] mc,cc;reg state;reg[3:0] tab;always @(posedge clk)if(set) beginif(!state)beginstate <= 1;case(tab)4'b0001:begin mlight <= 3'b010; clight <= 3'b001; tab = 4'b0010; {mch,mcl} 8'b00000101; {cch,ccl} <= 8'b00000101;end4'b0010:begin mlight <= 3'b001; clight <= 3'b100; tab = 4'b0100; {mch,mcl} 8'b00100001; {cch,ccl} <= 8'b00010110;end4'b0100:begin mlight <= 3'b001; clight <= 3'b010; tab = 4'b1000; {mch,mcl} 8'b00000101; {cch,ccl} <= 8'b00000101;end4'b1000:begin mlight <= 3'b100; clight <= 3'b001; tab = 4'b0001; {mch,mcl} 8'b00100101; {cch,ccl} <= 8'b00110000;enddefault: begin mlight <= 3'b100; clight <= 3'b001;endendcaseif(tab == 4'b0001)beginif(c == 0)begin state <= 0; tab <= 4'b1000;endendendelse if(state)beginif(tab == 4'b0100)beginif(c == 0)begin state <= 0;endendif({mch,mcl} > 1)if(mcl == 0)begi n mcl <= 4'b1001; mch <= mch - 1;e ndelse mcl <= mcl - 1;if({mch,mcl} == 1) state <= 0; <= <= <= <=if({cch,ccl} > 1)if(ccl == 0)begi n ccl <= 4'b1001; cch <= cch - 1;e ndelse ccl <= ccl - 1;if({cch,ccl} == 1) state <= 0;endendelse begin mlight <= 3'b100; clight <= 3'b001; tab <= 4'b0001; state <= 0;end en dmodule3.数码管显示模块[2 a P-ay"'-!—dk kedp.,0]r = t^Clk ――输入时钟信号Cou nt[3..O] ——输入数字的BCD码LED[7..O]――输出七段码源代码:module display(clk,co un t,led);in put clk;in put[3:0] cou nt;output[7:0] led;reg[7:0] led; always @(posedge clk) begincase(count)4'd0:led = 8'b00000011;4'd1:led = 8'b10011111;4'd2:led = 8'b00100101;4'd3:led = 8'b00001101;4'd4:led = 8'b10011001;4'd5:led = 8'b01001001;4'd6:led = 8'b01000001;4'd7:led = 8'b00011111;4'd8:led = 8'b00000001;4'd9:led = 8'b00001001;default:led = 8'bx;endcaseendendmodule四. 方案实现与测试(或调试)初始程序:module jiaotongdeng(set,c,clk,mlight,clight,mcount,ccount);input set,c,clk;output[2:0] mlight,clight;output[7:0] mcount,ccount;reg[2:0] mlight,clight;reg[7:0] mc,cc;reg state;reg[3:0] tab;assign mcount = mc;assign ccount = cc; always @(posedge clk) if(set) begin if(!state) begin state <= 1;case(tab) 4'b0001:begin if(c == 1) begin mlight <= 3'b010; clight <= 3'b001; tab = 4'b0010; mc <= 8'd5; cc <= 8'd5;end else state <= 0;end4'b0010:begin mlight <= 3'b001; clight <= 3'b100; tab = 4'b0100; mc <= 8'd21; cc <= 8'd16;end4'b0100:begin mlight <= 3'b100; clight <= 3'b010; tab = 4'b1000; mc <= 8'd5; cc <= 8'd5;end 4'b1000:begin mlight <= 3'b001; clight <= 3'b001; tab = 4'b0001; mc <= 8'd25; cc <= 8'd30;end default: begin mlight <= 3'b100; clight <= 3'b001;end endcase end else if(c == 1) begin if(mc > 1) if(mc[3:0] == 0)begin mc[3:0] <= 4'b1001; mc[7:4] <= mc[7:4] - 1;endelse mc[3:0] <= mc[3:0] - 1; if(mc == 1) state <= 0;if(cc > 1) if(cc[3:0] == 0) begin cc[3:0] <= 4'b1001; cc[7:4] <= cc[7:4] - 1;endelse cc[3:0] <= cc[3:0] - 1;if(cc == 1) state <= 0;endend else begin mlight <= 3'b100; clight <= 3'b001; tab <= 4'bOOO1; state <= 0;end en dmodule 错误:仿真波形不出来一一忘记初始化C改正错误后出现波形:— -- --- ---- ---- - --- - --- - --- - --- - --- - --- - ----I || ■I I I1错误:直接从16跳到9分析:16=00010000, 9=00001001当判断十六的后四位是发现是0000,于是接下来进行了个位变成1001,十位减一的操作,从而变成了00001001,逻辑错误,改正之后如下:module jiaot on gde ng(set,c,clk,mlight,clight,mch,cch,mcl,ccl);in put set,c,clk;output[2:0] mlight,clight;output[3:0] mch,mcl,cch,ccl;reg[2:0] mlight,clight;reg[3:0] mch,mcl,cch,ccl;reg[7:0] mc,cc;reg state;reg[3:0] tab;always @(posedge clk)if(set)beginif(!state) begin state <= 1;case(tab)4'b0001:beginif(c == 1)begin mlight <= 3'b010; clight <= 3'b001; tab = 4'b0010; {mch,mcl} <= 8'b00000101; {cch,ccl} <= 8'b00000101;endelsestate <= 0;end4'b0010:begin mlight <= 3'b001; clight <= 3'b100; tab = 4'b0100; {mch,mcl} <=8'b00100001; {cch,ccl} <= 8'b00010110;end4'b0100:begin mlight <= 3'b001; clight <= 3'b010; tab = 4'b1000; {mch,mcl} <=8'b00000101; {cch,ccl} <= 8'b00000101;end4'b1000:begin mlight <= 3'b100; clight <= 3'b001; tab = 4'b0001; {mch,mcl} <=8'b00100101; {cch,ccl} <= 8'b00110000;enddefault: begin mlight <= 3'b100; clight <= 3'b001;endendcaseendelseif(c == 1)beginif({mch,mcl} > 1)if(mcl == 0)begin mcl <= 4'b1001; mch <= mch - 1;endelse mcl <= mcl - 1;if({mch,mcl} == 1) state <= 0;if({cch,ccl} > 1)if(ccl == 0)begin ccl <= 4'b1001; cch <= cch - 1;endelse ccl <= ccl - 1;if({cch,ccl} == 1) state <= 0;endendelse begin mlight <= 3'b100; clight <= 3'b001; tab <= 4'bOOO1; state <= 0;end en dmoduleI i i i !■ I >1 i Si I I i i I I i i !■ I )i i i I I i i i I i i !■ i i i II ■- ■-..........r - - .II DI I I 11 I I I n I I I 1 I I I q I I I I nIII||| ^ | ||j||||j|||^||||I I I I I I I I II I I I I I I I I F I I I II I I I I I I i I II I I I I I I I I I I 1 I I! I波形正确然而在实验箱上进行验证的时候发现,c 的功能有问题,一旦将 c 拨回0,即乡村公路没有车的时候,发现无论交通灯处于哪一个状态, 时间都将停止不动。