数字系统设计实验报告-
北京理工大学数字系统设计与实验报告
3、仿真结果 功能仿真设置:
功能仿真结果: (1)总体仿真结果
(2)reset 高有效和二分频仿真结果
(3)四分频仿真结果
(4)八分频仿真结果
(5)十六分频仿真结果
四、实验心得
通过本次实验,设计频率可选的模十状态机以及 7 段译码电路,学会了以代码 形式实现频率多路选择器的功能,巩固了模十状态机的实现方式,进一步掌握 VerilogHDL 硬件描述语言。
功能仿真结果:
时序仿真设置:
时序仿真结果:
2、 3—8 译码器 (1)设计思路 随着时钟信号 clk 上升沿的到来,输入 D2D1D0 从 000 加到 111,每个输入 D2D1D0 对应着一个输出 Q7Q6Q5Q4Q3Q2Q1Q0,对应关系如真值表所示:
输入 D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 Q7 0 0 0 0 0 0 0 1 Q6 0 0 0 0 0 0 1 0 Q5 0 0 0 0 0 1 0 0 Q4 0 0 0 0 1 0 0 0
seg <= 7'b0011001; 5: seg <= 7'b0010010; 6: seg <= 7'b0000010; 7: seg <= 7'b1111000; 8: seg <= 7'b0000000; 9: seg <= 7'b0010000; default: seg <= 7'b0001000; endcase end endmodule (2)功能图
三、设计与实现
1、设计思路 (1) 、时钟信号 clk 作为分频器的输入,分频器的设计思路为设计一个模十六计 数器,cp0(Q0)输出即为二分频信号,cp1(Q1)输出即为四分频信号,cp2(Q2) 输出即为八分频信号,cp3(Q3)输出即为十六分频信号。分频器的输出由 4 选 1 多 路选择器的选择输入端 select 选择 2 分频、4 分频、 8 分频和 16 分频其中之一作为状 态机的时钟输入,当 select 为 0 时,输出为二分频信号;为 1 时,输出为四分频信 号;为 2 时,输出为八分频信号;为 3 时,输出为十六分频信号。 (2) 、reset 为高有效,则若 reset 信号为 1 时,qout 置为 0,则 now_state 为 0。 若 reset 信号为 0 时, qout 自加,并作为状态机的输入 驱动,让状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出。 (3) 、状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出,并使用此输出 作为驱动输入到 7 段译码器的显示逻辑。
数字系统设计实验报告
一、实验目的1. 理解数字系统设计的基本概念和流程。
2. 掌握数字电路的基本设计方法和技巧。
3. 熟悉常用数字集成电路的使用方法。
4. 培养实际动手能力和团队协作精神。
二、实验内容本次实验主要围绕数字系统设计展开,包括以下几个方面:1. 数字电路原理图绘制与仿真2. 数字系统硬件描述语言(HDL)编程3. 顶层模块设计4. 系统仿真与调试三、实验步骤1. 数字电路原理图绘制与仿真(1)根据实验要求,设计数字电路原理图,如数字时钟、移位寄存器等。
(2)使用Multisim等仿真软件对原理图进行仿真,验证电路功能。
2. 数字系统硬件描述语言(HDL)编程(1)根据原理图,使用Verilog或VHDL等HDL语言编写代码。
(2)对代码进行语法检查,确保代码正确。
3. 顶层模块设计(1)根据实验要求,设计顶层模块,如数字时钟控制器、移位寄存器控制器等。
(2)将底层模块(如计数器、触发器等)集成到顶层模块中。
4. 系统仿真与调试(1)使用仿真软件对顶层模块进行仿真,验证系统功能。
(2)根据仿真结果,对代码进行修改和优化,直至系统功能满足要求。
四、实验结果与分析1. 数字电路原理图绘制与仿真(1)原理图设计:根据实验要求,设计了一个数字时钟电路原理图,包括分频器、计数器、触发器等模块。
(2)仿真结果:通过仿真软件对原理图进行仿真,验证了电路功能。
2. 数字系统硬件描述语言(HDL)编程(1)代码编写:使用Verilog语言编写了数字时钟电路的代码,包括分频器、计数器、触发器等模块。
(2)代码验证:通过语法检查,确保代码正确。
3. 顶层模块设计(1)顶层模块设计:根据实验要求,设计了一个数字时钟控制器顶层模块,将底层模块集成到顶层模块中。
(2)系统仿真:通过仿真软件对顶层模块进行仿真,验证了系统功能。
4. 系统仿真与调试(1)系统仿真:通过仿真软件对顶层模块进行仿真,验证了系统功能。
(2)调试:根据仿真结果,对代码进行修改和优化,直至系统功能满足要求。
EDA实验报告
湖北民族学院信息工程学院实验报告(电气、电子类专业用)班级: 09 姓名:周鹏学号:030940908 实验成绩:实验地点: EDA实验室课程名称:数字系统分析与设计实验类型:设计型实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。
一、实验目的1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
4、了解格雷码变换的原理。
5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。
6、进一步掌握实验系统的使用。
二、实验原理、原理图及电路图3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。
其真值表如表1-1所示输入输出A B C D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0表1-1 三-八译码器真值表译码器不需要像编码器那样用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
华南理工大学数字系统设计实验3报告资料
实验三基于状态机的交通灯控制地点:31号楼312房;实验台号:12实验日期与时间:2017年12月08日评分:预习检查纪录:批改教师:报告内容:一、实验要求1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
编程之前要求同学们先画好ASM图。
4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。
5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL编写的模块可以混搭在一个电路图中使用。
EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。
6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。
二、实验内容1设计要求开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
2设计思路(1)数码管驱动第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL 编写的模块可以混搭在一个电路图中使用。
数字系统设计实验报告计数器、累加器
实验五计数器设计一、实验目的:1)复习计数器的结构组成及工作原理。
2)掌握图形法设计计数器的方法。
3)掌握Verilog HDL语言设计计数器的方法。
4)进一步熟悉设计流程、熟悉数字系统实验开发箱的使用。
二、实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)用图形法设计一个十进制计数器, 仿真设计结果。
下载, 进行在线测试。
用Verilog HDL语言设计一个十进制的计数器(要求加法计数;时钟上升沿触发;异步清零, 低电平有效;同步置数, 高电平有效), 仿真设计结果。
下载, 进行在线测试。
四、实验截图1)原理图:2)仿真波形:3)文本程序:5)波形仿真:五、实验结果分析、体会:这次实验, , 由于试验箱有抖动, 故在原理图上加了去抖电路, 但是在波形仿真的时候无需考虑抖动, 所以我在波形仿真的时候将去抖电路消除了, 方便观察实验六累加器设计一、实验目的:1)学习了解累加器工作原理;2)了解多层次结构的设计思路;3)学会综合应用原理图和文本相结合的设计方法。
实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)在文本输入方式下设计分别设计出8位的全加器和8位的寄存器, 并分别存为add8_8.v和reg8.v;3) 2)在原理图输入方式下通过调用两个模块设计出累加器电路, 并存为add8.bdf, 进行功能仿真;下载, 进行在线测试。
四、实验截图1)8位累加器原理图:2)波形仿真:3)文本输入8位加法器语言及符号:生成元器件:4)文本输入8位寄存器:生成图元:五、实验总结:通过本次实验, 学习了解累加器工作原理, 了解多层次结构的设计思路, 学会综合应用原理图和文本相结合的设计方法。
数字系统设计_实验报告
一、实验目的1. 熟悉数字系统设计的基本流程和方法;2. 掌握数字系统硬件描述语言(如Verilog)的基本语法和设计方法;3. 培养动手实践能力,提高数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。
二、实验内容1. 数字系统硬件描述语言(Verilog)编程2. 数字系统模块设计3. 数字系统仿真与调试三、实验步骤1. 设计数字系统模块(1)分析数字系统功能需求,确定模块功能;(2)根据模块功能,设计模块的输入输出端口和内部结构;(3)使用Verilog语言编写模块代码。
2. 编写顶层模块(1)根据数字系统功能需求,设计顶层模块的输入输出端口和内部结构;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。
3. 仿真与调试(1)使用仿真工具(如ModelSim)对顶层模块进行仿真;(2)观察仿真波形,分析模块功能是否满足设计要求;(3)根据仿真结果,对模块代码进行修改和优化;(4)重复步骤(2)和(3),直至模块功能满足设计要求。
四、实验结果与分析1. 数字系统模块设计(1)设计了一个4位加法器模块,包括两个4位输入端口、一个4位输出端口和两个进位输出端口;(2)设计了一个2位乘法器模块,包括两个2位输入端口和一个4位输出端口;(3)设计了一个8位存储器模块,包括一个8位输入端口、一个8位输出端口和一个地址输入端口。
2. 顶层模块设计(1)根据功能需求,设计了一个包含加法器、乘法器和存储器的数字系统顶层模块;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。
3. 仿真与调试(1)使用ModelSim对顶层模块进行仿真;(2)观察仿真波形,发现加法器和乘法器功能正常,但存储器模块存在错误;(3)分析存储器模块代码,发现地址输入端口的逻辑关系错误;(4)修改存储器模块代码,重新进行仿真,验证模块功能正确。
五、实验总结1. 通过本次实验,掌握了数字系统设计的基本流程和方法;2. 学会了使用Verilog语言进行数字系统模块设计;3. 培养了动手实践能力,提高了数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。
数字系统设计及实验实验报告
数字系统设计及实验实验报告一、实验目的数字系统设计及实验课程旨在让我们深入理解数字逻辑的基本概念和原理,掌握数字系统的设计方法和实现技术。
通过实验,我们能够将理论知识应用于实际,提高解决问题的能力和实践动手能力。
本次实验的具体目的包括: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 工具中对编写的代码进行仿真,输入不同的测试向量,观察输出结果是否符合预期。
计算机系统综合设计实验报告
《计算机系统综合设计》报告目录1.设计目标 (2)2.1 分析启动引导代码 (2)2.1.1 设计方案 (2)2.1.2 实现方法 (3)2.2 mips汇编算法分析 (5)2.2.1设计方案 (5)2.2.2 实现方法............................................................................................... 错误!未定义书签。
2.3 GPIO设计 (6)2.3.1设计方案 (6)2.3.2 实现方法............................................................................................... 错误!未定义书签。
2.4 UART3 输入输出 (7)2.4.1设计方案 (7)2.4.2 实现方法............................................................................................... 错误!未定义书签。
2.5 交叉调用(GPIO输入串口输出) (7)2.5.1 设计方案 (7)2.5.2 实现方法............................................................................................... 错误!未定义书签。
2.6 RT-Thread 操作系统开发 (7)2.6.1 设计方案 (7)2.6.2 实现方法............................................................................................... 错误!未定义书签。
3.1 分析启动引导代码 (7)3.2 mips汇编算法分析 (8)3.3 GPIO 设计 (8)3.4 UART3 输入输出 (8)3.5 交叉调用(GPIO输入串口输出) (8)3.6 RT-Thread 操作系统开发 (9)4.设计结论 (9)1.设计目标该设计要完成的主要内容,包括:(1)分析启动引导代码(2)mips汇编算法分析(3)GPIO输入输出(4)UART3输入输出(5)RT-Thread操作系统开发2.设计实现2.1 分析启动引导代码2.1.1 设计方案学习MIPS指令集,参考mips32-instructions.pdf文件,结合运行结果理解代码,对启动引导代码start.s文件进行注释2.1.2 实现方法2.2 mips汇编算法分析2.2.1设计方案用mips汇编语言完成完全树的中序遍历算法,c++语言的二叉树的前序遍历的非递归形式如下:2.3 GPIO设计2.3.1设计方案将LED灯、开关与电路板自选端口连接,设计c语言代码实现通过开关控制流水灯效果,按键后每个小灯依次发光500ms开关接AC97_DI[36]2.4 UART3 输入输出2.4.1设计方案在main.cpp文件主函数main() 中使用printf() 函数,由于此文件中包含了头文件stdio.h所以会跳转到stdio.h中。
数字系统设计 实验报告
数字系统设计实验报告1. 引言数字系统设计是计算机科学与工程中的重要领域之一。
本实验旨在通过设计一个基本的数字系统,深入理解数字系统的原理和设计过程。
本文将按照以下步骤详细介绍实验的设计和实施。
2. 实验目标本实验旨在设计一个简单的数字系统,包括输入、处理和输出三个模块。
具体目标如下: - 设计一个输入模块,用于接收用户的输入数据。
- 设计一个处理模块,对输入数据进行特定的处理。
- 设计一个输出模块,将处理结果展示给用户。
3. 实验设计3.1 输入模块设计输入模块主要用于接收用户的输入数据,并将其传递给处理模块进行处理。
在本实验中,我们选择使用键盘作为输入设备。
具体设计步骤如下: 1. 初始化输入设备,确保能够正确接收用户输入。
2. 设计输入缓冲区,用于存储用户输入的数据。
3. 实现输入函数,将用户输入的数据存储到输入缓冲区中。
3.2 处理模块设计处理模块是数字系统的核心部分,负责对输入数据进行特定的处理。
在本实验中,我们选择设计一个简单的加法器作为处理模块。
具体设计步骤如下: 1. 定义输入数据的格式和表示方法。
2. 实现加法器的逻辑电路,可以通过使用逻辑门和触发器等基本组件来完成。
3. 设计加法器的控制电路,用于控制加法器的运算过程。
4. 验证加法器的正确性,可以通过给定一些输入数据进行测试。
3.3 输出模块设计输出模块用于将处理结果展示给用户。
在本实验中,我们选择使用显示器作为输出设备。
具体设计步骤如下: 1. 初始化输出设备,确保能够正确显示处理结果。
2. 设计输出缓冲区,用于存储待显示的数据。
3. 实现输出函数,将输出数据从输出缓冲区中传输到显示器上。
4. 实验实施4.1 输入模块实施根据3.1节中的设计步骤,我们首先初始化输入设备,然后设计输入缓冲区,并实现相应的输入函数。
4.2 处理模块实施根据3.2节中的设计步骤,我们定义输入数据的格式和表示方法,然后实现加法器的逻辑电路和控制电路。
东南大学数字系统实验实验一
数字系统实验报告实验一
一、实验目的
熟悉quartus环境下的vhdl电路设计,学习简单组合电路设计。
二、实验内容
设计双二选一多路选择器:
1.设计二选一多路选择器
2.将两个二选一多路选择器连接,完成三选一功能
3.仿真验证及下载测试
三、实验过程
1.设计二选一多路选择器。
在quartus中新建工程,并创建vhdl文件,编写代码如下:
2.将两个二选一选择器连接构成双二选一多路选择器,连接方式如下:
根据连接方式,可以得到输入输出真值表:
3.引脚绑定
按下表进行引脚绑定
四、实验结果及结论
1.时序仿真结果
对双四选一多路选择器进行时序仿真,结果如下:
仿真遍历了所有输入端口的取值,在S1,S2分别取00,01,10,11时,输出分别对应A,B,C,B的值,对比真值表,可以发现仿真结果正确。
2.下载验证
按引脚图绑定端口,其中S1,S2分别由两个键控制,输出口A,B,C连接的是电路板的音调控制,将两个键自由组合按下,可以明显听到发出三种不同的音调。
因此可以验证设计无误。
数字系统课程设计报告-交通灯-实验报告
交通灯控制电路摘要在一个交通繁忙的十字路口,没有交通灯来控制来往车辆和行人的通行,假设也没有交警,那会发生什么事情呢?后果是难以想象的,可能会陷入一片混乱,甚至瘫痪。
当然我们每个人都不希望这样。
我们作为社会的一员,每人都有责任为它的更加先进和快捷做出力所能及的事情。
我设计的这个交通控制系统可以通过交通灯控制东西方向车道和南北方向车道两条主次交叉道路上的车辆交替运行,用以减少交通事故的发生概率。
并且经过这次实验使得我对电子技术课程内容的理解和掌握有了更深一层的认识,也学会使用半导体元件和集成电路,掌握电子电路的基本分析方法和设计方法,进一步提高分析解决实际问题的综合能力,也为将来的就业或继续深造做好准备。
一、任务在城市道路上的交叉路口一般设置有交通灯,用于管理两条道路通行车辆。
现有一条主干道和一条支干道的汇合点形成十字交叉口,为确保车辆安全、迅速的通行,在交叉路口的每条道上设置一组交通灯,交通灯由红、黄、绿3色组成。
红灯亮表示此通道禁止车辆通过路口;黄灯亮表示此通道未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯亮表示该通道车辆可以通行。
要求设计一交通灯控制电路以控制十字路口两组交通灯的状态转换,指挥车辆安全通行。
指挥车辆安全通行。
设计要求1、基本要求(1)设计一个十字路口交通灯控制电路,要求主干道与支干道交替通行。
主干道通行时,主干道绿灯亮,支干道红灯亮,时间为60秒。
支干道通行时,支干道绿灯亮,主干道红灯亮,时间为30秒。
(2)每次绿灯变红灯时,要求黄灯先亮5秒钟。
此时另一路口红灯也不变。
(3)黄灯亮时,要求黄灯闪烁,频率为1Hz。
2、发挥部分要求在绿灯亮(通行时间内)和红灯亮(禁止通行时间内)均有倒计时显示。
二、设计方案选取与论证1、所选方案的理由:本设计的交通灯控制电路是综合运用了74LS192芯片、7474芯片和NE555芯片等的集成电路。
根据任务要求,用单片机或分立组件来实现是比较容易的,但是由于要求不能使用单片机设计,因此使用数字电路课程里学过的知识,运用它们来设计分析电路。
数字电路与系统设计实验报告
数字电路与系统设计实验报告学院:班级:姓名:实验一基本逻辑门电路实验一、实验目的1、掌握TTL与非门、与或非门和异或门输入与输出之间的逻辑关系。
2、熟悉TTL中、小规模集成电路的外型、管脚和使用方法。
二、实验设备1、二输入四与非门74LS00 1片2、二输入四或非门74LS02 1片3、二输入四异或门74LS86 1片三、实验内容1、测试二输入四与非门74LS00一个与非门的输入和输出之间的逻辑关系。
2、测试二输入四或非门74LS02一个或非门的输入和输出之间的逻辑关系。
3、测试二输入四异或门74LS86一个异或门的输入和输出之间的逻辑关系。
四、实验方法1、将器件的引脚7与实验台的“地(GND)”连接,将器件的引脚14与实验台的十5V连接。
2、用实验台的电平开关输出作为被测器件的输入。
拨动开关,则改变器件的输入电平。
3、将被测器件的输出引脚与实验台上的电平指示灯(LED)连接。
指示灯亮表示输出低电平(逻辑为0),指示灯灭表示输出高电平(逻辑为1)。
五、实验过程1、测试74LS00逻辑关系(1)接线图(图中K1、K2接电平开关输出端,LED0是电平指示灯)(2)真值表2、测试74LS02逻辑关系(1)接线图(2)真值表3、测试74LS86逻辑关系接线图(1)接线图(2)真值表六、实验结论与体会实验是要求实践能力的。
在做实验的整个过程中,我们首先要学会独立思考,出现问题按照老师所给的步骤逐步检查,一般会检查处问题所在。
实在检查不出来,可以请老师和同学帮忙。
实验二逻辑门控制电路实验一、实验目的1、掌握基本逻辑门的功能及验证方法。
2、掌握逻辑门多余输入端的处理方法。
3、学习分析基本的逻辑门电路的工作原理。
二、实验设备1、基于CPLD的数字电路实验系统。
2、计算机。
三、实验内容1、用与非门和异或门安装给定的电路。
2、检验它的真值表,说明其功能。
四、实验方法按电路图在Quartus II上搭建电路,编译,下载到实验板上进行验证。
74138的实验报告
(7) 学习定时分析工具的使用方法。
74138 的实验报告数字系统设计综合实验报告 数字系统设计综合实验报告 实验名称 :1 、加法器设计2、编码器设计3、译码器设计4、数据选择器设计5、计数器设计 6、累加器设计 7、交通灯控制器设计班级: 姓名: 学号: 指导老师 :实验 1 加法器设计掌握用 Verilog HDL 语言设计多位加法器的方法。
(6) 学习运用波形仿真验证程序的正确性。
1) 实验目的(1) 复习加法器的分类及工作原理。
(2) 掌握用图形法设计半加器的方法。
(3) 掌握用元件例化法设计全加器的方法。
(4) 掌握用元件例化法设计多位加法器的方法。
(5)2) 实验原理加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。
目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。
加法器可分为1 位加法器和多位加法器两大类。
1 位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。
(1) 半加器如果不考虑来自低位的进位而将两个1 位二进制数相加,称半加。
实现半加运算的电路则称为半加器。
若设A和B是两个1位的加数,S是两者相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到。
(2) 全加器在将两个1 位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。
实现全加运算的电路则称为全加器。
若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向咼位的进位。
则由二进制加法运算规则可以得到3)(1)(2)(3) 实验内容及步骤用图形法设计半加器,仿真设计结果。
用原件例化的方法设计全加器,仿真设计结果用原件例化的方法设计一个4 为二进制加法器,仿真设计结果,进行定时分析。
(4) 用Verilog HDL 语言设计一个4 为二进制加法器,仿真设计结果,进行定时分析。
PLD与数字系统设计实验报告
PLD与数字系统设计实验报告A组实验四:数字密码锁1 实验要求使用Xilinx公司的Spartan3S 400AN开发板上的相关模块,利用ISE开发软件完成数字密码锁的设计,要求实现如下功能:利用实验板上的4×3小键盘,设计4位密码锁,当输入密码正确时,在液晶屏上显示“OK”,否则,显示“ERROR”,在输入过程中,显示输入的数据个数,当有错误的输入时,显示“ERROR”,当全部输入正确时,才显示OK。
2 实验原理2.1 4×3数字键盘数字键盘又叫行列式键盘。
用带IO口的线组成行列结构,按键设置在行列的交点上。
例如用4×3的行列式结构可以构成12个键的键盘。
实验中所用到的数字键盘原理如图1所示。
图1 4×3数字键盘例如设置此模块的列为输入端口,行为输出端口。
那么在按下某一个键时,该键所在的开关接通,由输入端口向输出端口输出一个有效电平,继而触发其他模块。
2.2 LCD液晶显示模块开发板上使用的是无字库的12864LCD显示器,12864LCD显示模块是由128*64个液晶显示点组成的一个128列*64行的阵列。
每个显示点对应一位二进制数,1表示亮,0表示灭(但实验所用开发板上该模块实际是低电平表示亮、高电平表示灭)。
存储这些点阵信息的RAM称为显示数据存储器。
以下是关于显示屏的一些参数:图2 128*64 LCD控制器结构框图图3 128*64时序图图4 指令功能表图5 初始化指令流程要显示某个图形就是将相应的点阵信息写入到相应的存储单元中。
图形的点阵信息可以由自己设计也可借助字模软件,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。
由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。
左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。
系统设计实验报告 范本
系统设计实验报告范本
实验名称:系统设计
实验目的:通过系统设计,学习和掌握软件工程的基本原理和方法,提高软件设计和开发能力。
实验内容:
1.需求分析:明确系统功能需求和性能需求,确定系统的输入输出。
2.概要设计:确定系统的主要模块和模块之间的关系,制定模块接口规范。
3.详细设计:对每个模块进行详细设计,包括数据结构、算法、接口设计等。
4.编码实现:根据设计文档进行编码实现,实现各个模块的功能。
5.测试验证:对系统进行功能测试、性能测试、兼容性测试等,确保系统稳定可靠。
实验步骤:
1.需求分析:通过与用户沟通,了解系统的需求和功能,明确系统的输入输出。
2.概要设计:根据需求分析结果,确定系统的主要模块和模块之间的关系,制定模块接口规范。
3.详细设计:对每个模块进行详细设计,包括数据结构、算法、接口设计等。
4.编码实现:根据设计文档进行编码实现,实现各个模块的功能。
5.测试验证:对系统进行功能测试、性能测试、兼容性测试等,确保
系统稳定可靠。
实验结果:
通过本次实验,我深入了解了软件工程的基本原理和方法,掌握了系统设计的流程和方法。
在实践中,我发现需求分析非常重要,只有明确了需求,才能进行有效的设计和开发。
同时,详细设计也非常关键,只有设计好了每个模块,才能保证系统的稳定性和可靠性。
实验总结:
本次实验让我深入了解了系统设计的流程和方法,提高了我对软件工程的认识和理解。
在今后的软件开发中,我将更加注重需求分析和详细设计,确保系统的稳定可靠。
EDA实验报告
一MAX –plusII及开发系统使用一、实验目的1、熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路2、掌握层次化设计的方法3、熟悉DXT-BⅢ型EDA试验开发系统的使用二、主要实验设备PC 机一台(中档以上配置),DXT-B3 EDA实验系统一台。
三、实验原理数字系统设计系列实验是建立在数字电路基础上的一个更高层次的设计性实验。
它是借助可编程逻辑器件(PLD),采用在系统可编程技术(ISP),利用电子设计自动化软件(EDA),在计算机(PC)平台上进行的。
因为本实验是在计算机平台上进行,因此实验方式,实验手段和实验仪器与传统的实验有很大的区别,主要体现在以下几个方面:1、实验器材集中化,所有实验基本上在一套实验设备上进行。
传统的实验每作完一个实验,实验器材基本上都要变动(个别除外)。
而做本实验时,只要在计算机上把不同的程序输进去,其它步骤所有实验都一致;2、实验耗材极小(基本上没有耗材);3、在计算机上进行,自动化程度高,人机交互性好,修改、验证实验简单;4、下载后,实验结果清晰;5、实验仪器损耗少,维护简单;下面,我们就本套实验设备做一个简单的介绍。
(一)Max+plusⅡ10.0的使用。
1、Max+PlusII软件的安装步骤:第一步:系统要求奔3CPU以上,128M内存以上,4G 以上硬盘,98 操作系统(98或Me操作系统才可以下载,其他操作系统下载必须安装驱动,否则只能仿真,如果大家只进行仿真的话,对系统没要求)第二步:安装点击安装可执行文件进行安装,安装完毕后会弹出一对话框,点击是或否都可以。
第三步:将安装文件夹中的License 文件夹打开,里面有一个License.bat 注册文件,将此文件复制到你的安装目录下(你的安装目录可放在任一个驱动器下,然后建立一个Max10的文件夹,将系统安装在此文件夹中,安装后此文件夹中会有三个文件夹)的任一个文件夹中,要清楚位置。
第四步:注册启动Max+PlusII 软件,可以从开始-->程序-->Altera-->Max+PlusII 打开,也可以建立一个快捷方式在桌面上。
数字系统电路实验报告(3篇)
第1篇一、实验目的1. 理解数字系统电路的基本原理和组成。
2. 掌握数字电路的基本实验方法和步骤。
3. 通过实验加深对数字电路知识的理解和应用。
4. 培养学生的动手能力和团队合作精神。
二、实验原理数字系统电路是由数字逻辑电路构成的,它按照一定的逻辑关系对输入信号进行处理,产生相应的输出信号。
数字系统电路主要包括逻辑门电路、触发器、计数器、寄存器等基本单元电路。
三、实验仪器与设备1. 数字电路实验箱2. 数字万用表3. 示波器4. 逻辑分析仪5. 编程器四、实验内容1. 逻辑门电路实验(1)实验目的:熟悉TTL、CMOS逻辑门电路的逻辑功能和测试方法。
(2)实验步骤:1)搭建TTL与非门电路,测试其逻辑功能;2)搭建CMOS与非门电路,测试其逻辑功能;3)测试TTL与门、或门、非门等基本逻辑门电路的逻辑功能。
2. 触发器实验(1)实验目的:掌握触发器的逻辑功能、工作原理和应用。
(2)实验步骤:1)搭建D触发器电路,测试其逻辑功能;2)搭建JK触发器电路,测试其逻辑功能;3)搭建计数器电路,实现计数功能。
3. 计数器实验(1)实验目的:掌握计数器的逻辑功能、工作原理和应用。
(2)实验步骤:1)搭建同步计数器电路,实现加法计数功能;2)搭建异步计数器电路,实现加法计数功能;3)搭建计数器电路,实现定时功能。
4. 寄存器实验(1)实验目的:掌握寄存器的逻辑功能、工作原理和应用。
(2)实验步骤:1)搭建4位并行加法器电路,实现加法运算功能;2)搭建4位并行乘法器电路,实现乘法运算功能;3)搭建移位寄存器电路,实现数据移位功能。
五、实验结果与分析1. 逻辑门电路实验通过搭建TTL与非门电路和CMOS与非门电路,测试了它们的逻辑功能,验证了实验原理的正确性。
2. 触发器实验通过搭建D触发器和JK触发器电路,测试了它们的逻辑功能,实现了计数器电路,验证了实验原理的正确性。
3. 计数器实验通过搭建同步计数器和异步计数器电路,实现了加法计数和定时功能,验证了实验原理的正确性。
系统设计实验报告
4.2 关系模式设计
学生信息数据表(借阅证号,姓名,性别,系别,班级)
图书信息数据表(图书编号,图书类别,图书作者,出版社 ,购买日期,购买价格,借阅次数,
是否借出)
读者借阅记录数据表(借阅证号,图书编号,借阅日期,归还日期,借书数量)
实验项目名称
系统设计
实验成绩
实验者 同组者
专业班级 无
工商 1005
组别 实验日期
1人 1组
一、 实验目的、意义 1.在上一实验<<系统分析>>的基础上,正确运用系统设计的方法,结合上一个实验的模拟课题, 巩固管理信息系统的系统设计知识,提高系统设计实践能力。 2.熟悉功能模块设计、代码设计、网络设计、数据库设计、输入输出设计等环节。 3.树立正确的系统设计思想,培养分析问题、解决问题的能力,提高查询资料和撰写书面文
简述: 还书记录 数据流来源: 图书管理人员 数据流去向: P2-14 图书归还处理 数据流组成: 索书号+借阅数量 数据流量: 100 笔/日 高峰流量: 200 笔/日
数据流编号: D07 数据流名称: 填写归还记录
简述: 在图书借阅模块中填写归还记录 数据流来源: P2-14 图书归还处理 数据流去向: 借阅表 数据流组成: 索书号+借阅数量+状态 数据流量: 100 笔/日 高峰流量: 200 笔/日
高峰流量: 300 人次/日
数据流编号: D10 数据流名称: 学生信息
简述: 学生信息 数据流来源: P7-11 学生登录检查 数据流去向: 学生表 数据流组成: 用户名+密码+权限 数据流量: 100 人次/日 高峰流量: 300 人次/日
(3)处理逻辑的描述 处理逻辑编号:P1 处理逻辑名称:图书编目系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字系统设计实验报告实验题目:学院:专业:班级:姓名:学号:一.实验内容及要求使用平台上的8个七段数码管进行显示,即围绕平台上的8个数码管转圈。
要求:(1)要求同时显示的段数为1、2、3段可选。
(2)可进行顺向、逆向显示(通过某一开关键进行选择)(3)按下复位键后,重新开始旋转。
(4)多种点亮方式自选,如全亮等。
二.题目功能分析设计一个让平台上面8个七段数码管转圈的电路,默认段数为一段,顺向转圈,然后给五个开关键分别赋予逆向、重新旋转、全亮、显示的段数为2段、显示的段数为3段的功能。
三.总体模块划分将8个七段数码管转圈的电路分成20个小的部分来组成,首先把电路分为全亮或不全亮两种情况,而每一部分都可以实现这些功能:把段数可以选着一段、两段、三段,可以正向转圈、反向转圈。
四.源程序代码(每一个子程序都要写上)library ieee;use ieee.std_logic_1164.all;entity led isport(clk: in std_logic;key_1,key_2,key_two,key_th,key_light: in std_logic;sel_out: out std_logic_vector(7 downto 0);outp: out std_logic_vector(6 downto 0));end led;architecture behave of led issignal sel:std_logic_vector(7 downto 0):="11111111";beginprocess(clk)variable counter:integer range 0 to 19;beginif rising_edge(clk) thenif counter=19 thencounter:=0;elsecounter:=counter+1;end if;end if;sel_out<=sel;if key_1 = '0' then counter:=0;end if;if key_light = '1' thencase counter iswhen 0 =>if key_th='0' thenif key_2='1' thensel<="00011111";outp<="0000001";elsesel<="01111111";outp<="0110001";end if;end if;if key_two ='0' thenif key_2='1' thensel<="00111111";outp<="0000001";elsesel<="01111111";outp<="0100001";end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="01111111"; outp<="0000001";elsesel<="01111111"; outp<="0000001";end if;end if;when 1 =>if key_th='0' thenif key_2='1' thensel<="10001111";outp<="0000001";elsesel<="01111111";outp<="0111000";end if;end if;if key_two ='0' thenif key_2='1' thensel<="10011111"; outp<="0000001"; elsesel<="01111111"; outp<="0110000"; end if;end if;if key_two ='1' and key_th='1' thenif key_2='1' thensel<="10111111"; outp<="0000001"; elsesel<="01111111"; outp<="0100000"; end if;end if;when 2 =>if key_th='0' thenif key_2='1' thensel<="11000111";outp<="0000001"; elsesel<="00111111";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11001111"; outp<="0000001"; elsesel<="01111111"; outp<="0011000"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11011111"; outp<="0000001"; elsesel<="01111111"; outp<="0010000"; end if;end if;when 3 =>if key_th='0' thenif key_2='1' thensel<="11100011";outp<="0000001"; elsesel<="00011111";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11100111"; outp<="0000001"; elsesel<="00111111"; outp<="0001000"; end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="11101111"; outp<="0000001"; elsesel<="01111111"; outp<="0001000"; end if;end if;when 4 =>if key_th='0' thenif key_2='1' thensel<="11110001";outp<="0000001"; elsesel<="10001111";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11110011"; outp<="0000001"; elsesel<="10011111"; outp<="0001000"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11110111"; outp<="0000001"; elsesel<="10111111"; outp<="0001000"; end if;end if;when 5 =>if key_th='0' thenif key_2='1' thensel<="11111000";outp<="0000001";elsesel<="11000111";outp<="0001000";end if;end if;if key_two='0' thenif key_2='1' thensel<="11111001"; outp<="0000001";elsesel<="11001111"; outp<="0001000";end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="11111011"; outp<="0000001";elsesel<="11011111"; outp<="0001000";end if;end if;when 6 =>if key_th='0' thenif key_2='1' thensel<="11111101";outp<="0000001";sel<="11111110";outp<="0000011";elsesel<="11100011";outp<="0001000";end if;end if;if key_two='0' thenif key_2='1' thensel<="11111100"; outp<="0000001";elsesel<="11100111"; outp<="0001000";end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="11111101"; outp<="0000001";elsesel<="11101111"; outp<="0001000"; end if;end if;when 7 =>if key_th='0' thenif key_2='1' thensel<="11111110";outp<="0000111"; elsesel<="11110001";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11111110"; outp<="0000011"; elsesel<="11110011"; outp<="0001000"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111110"; outp<="0000001"; elsesel<="11110111"; outp<="0001000"; end if;end if;when 8 =>if key_th='0' thenif key_2='1' thensel<="11111110";outp<="0001110"; elsesel<="11111000";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11111110"; outp<="0000110"; elsesel<="11111001"; outp<="0001000"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111110"; outp<="0000010"; elsesel<="11111011"; outp<="0001000"; end if;end if;when 9 =>if key_th='0' thenif key_2='1' thensel<="11111110";outp<="0001100"; sel<="11111101";outp<="0001000"; elsesel<="11111100";outp<="0001000"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11111110"; outp<="0001100"; elsesel<="11111100"; outp<="0001000"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111110"; outp<="0000100"; elsesel<="11111101"; outp<="0001000"; end if;end if;when 10 =>if key_th='0' thenif key_2='1' thensel<="11111000";outp<="0001000"; elsesel<="11111110";outp<="0001110"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11111100"; outp<="0001000";elsesel<="11111110"; outp<="0001100"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111110"; outp<="0001000"; elsesel<="11111110"; outp<="0001000"; end if;end if;when 11 =>if key_th='0' thenif key_2='1' thensel<="11110001";outp<="0001000"; elsesel<="11111110";outp<="0000111"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11111001"; outp<="0001000"; elsesel<="11111110"; outp<="0000110"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111101"; outp<="0001000"; elsesel<="11111110"; outp<="0000100"; end if;end if;when 12 =>if key_th='0' thenif key_2='1' thensel<="11100011";outp<="0001000"; elsesel<="11111100";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11110011"; outp<="0001000"; elsesel<="11111110"; outp<="0000011"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11111011"; outp<="0001000"; elsesel<="11111110"; outp<="0000010"; end if;end if;when 13 =>if key_th='0' thenif key_2='1' thensel<="11000111";outp<="0001000"; elsesel<="11111000";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11100111"; outp<="0001000"; elsesel<="11111100"; outp<="0000001"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11110111"; outp<="0001000"; elsesel<="11111110"; outp<="0000001"; end if;end if;when 14 =>if key_th='0' thenif key_2='1' thensel<="10001111";outp<="0001000"; elsesel<="11110001";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="11001111"; outp<="0001000"; elsesel<="11111001"; outp<="0000001"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11101111"; outp<="0001000"; elsesel<="11111101"; outp<="0000001"; end if;end if;when 15 =>if key_th='0' thenif key_2='1' thensel<="00011111";outp<="0001000"; elsesel<="11100011";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="10011111"; outp<="0001000"; elsesel<="11110011"; outp<="0000001"; end if;end if;if key_two='1' and key_th='1' then if key_2='1' thensel<="11011111"; outp<="0001000"; elsesel<="11111011"; outp<="0000001"; end if;end if;when 16 =>if key_th='0' thenif key_2='1' thensel<="10111111";outp<="0001000";sel<="01111111";outp<="0011000";elsesel<="11000111";outp<="0000001";end if;end if;if key_two='0' thenif key_2='1' thensel<="00111111"; outp<="0001000";elsesel<="11100111"; outp<="0000001";end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="10111111"; outp<="0001000";elsesel<="11110111"; outp<="0000001";end if;end if;when 17 =>if key_th='0' thenif key_2='1' thensel<="01111111";outp<="0111000";elsesel<="10001111";outp<="0000001";end if;end if;if key_two='0' thenif key_2='1' thensel<="01111111"; outp<="0011000";elsesel<="11001111"; outp<="0000001";end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="01111111"; outp<="0001000";elsesel<="11101111"; outp<="0000001";end if;end if;when 18 =>if key_th='0' thenif key_2='1' thensel<="01111111";outp<="0110001"; elsesel<="00011111";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="01111111"; outp<="0110000"; elsesel<="10011111"; outp<="0000001"; end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="01111111"; outp<="0010000"; elsesel<="10111111"; outp<="0000001"; end if;end if;when 19 =>if key_th='0' thenif key_2='1' thensel<="01111111";outp<="0100001"; sel<="10111111";outp<="0000001"; elsesel<="00111111";outp<="0000001"; end if;end if;if key_two='0' thenif key_2='1' thensel<="01111111"; outp<="0100001"; elsesel<="00111111"; outp<="0000001"; end if;end if;if key_two='1' and key_th='1' thenif key_2='1' thensel<="01111111"; outp<="0100000";elsesel<="10111111"; outp<="0000001";end if;end if;when others => sel<="XXXXXXXX"; outp<="XXXXXXX";end case;else if counter=0 or counter=4 or counter=8 orcounter=12 or counter=16 thensel<="00000000"; outp<="1111111";elsesel<="00000000"; outp<="0000000";end if;end if;end process;end behave;五.演示实验结果六.系统设计的心得体会课题设计过程中我不怕失败,在失败中总结经验,为成功积累素材;学着自我超越,敢于尝试,在尝试中进步,这对我能力的提高大有好处。