数字系统设计实验
数字逻辑与数字系统设计课程设计
数字逻辑与数字系统设计课程设计一、课程设计背景数字逻辑与数字系统设计课程介绍了数字电路的基本概念、设计和分析方法。
数字逻辑是电子技术中非常重要的一部分,广泛应用于计算机、通信、自动化控制、计算器、游戏机等电子产品。
通过本课程的学习,学生将掌握数字逻辑和数字系统设计的基本原理和方法。
二、课程设计内容本次数字逻辑与数字系统设计课程设计主要分为以下几个部分:1.实验一:Karnaugh图和逻辑多路选择器设计实验2.实验二:数字逻辑电路的组合设计实验3.实验三:数字电路的时序设计实验4.实验四:数字系统设计实验5.实验五:数字逻辑综合设计实验实验一:Karnaugh图和逻辑多路选择器设计实验通过本实验,学生将学会运用Karnaugh图方法设计简单的逻辑电路,掌握最小化布尔函数的方法。
同时,学生将学习多路选择器的设计方法,掌握多路选择器的应用技巧。
实验二:数字逻辑电路的组合设计实验通过本实验,学生将学习的是数字逻辑电路的组合设计方法,包括基本逻辑门和复杂逻辑电路的设计技术。
同时,学生还将掌握基本电路的仿真方法,通过仿真软件对电路进行验证。
实验三:数字电路的时序设计实验在本实验中,学生将掌握数字电路的时序设计方法,了解时序电路的作用、分类和基本原理。
同时,学生将学习数字电路时序仿真的方法,能够进行基本时序电路模拟。
实验四:数字系统设计实验在本实验中,学生将学习数字系统设计的基本方法和过程,包括总体结构设计、输入输出接口的设计、存储器的设计等;同时,学生还将了解数字系统的仿真和测试方法,对设计的数字系统进行仿真和测试。
实验五:数字逻辑综合设计实验在本实验中,学生将通过数字逻辑综合设计,掌握数字逻辑综合应用技巧,并能够在实践中学习根据需求进行电路综合的方法。
三、课程设计特点本次数字逻辑与数字系统设计课程设计不仅注重理论教学,更加强调实践教学,特点如下:1.注重实验教学,对学生的动手能力和实践能力进行提高。
2.充分利用仿真软件进行电路设计和验证,使学生在熟悉实际电路设计方法的同时,也能提高计算机仿真的技能和水平。
数字系统设计 实验二报告(计09-1班 姚伟 08093342)
实验二:时序电路设计一.实验目的熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
二.实验任务任务1:设计触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
任务2:设计锁存器,同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
三.实验过程1.新建一个文件夹,取名second。
2.输入源程序。
3.文件存盘,文件名为second,扩展名为.vhd。
4.创建工程,按照老师要求对软件进行设置。
5.进行失序仿真,得到仿真图形。
四.实验程序任务1:library ieee;use ieee.std_logic_1164.all;entity second isport(clk,d:in std_logic;q:out std_logic);end;architecture bhv of second issignal q1:std_logic;beginprocess(clk,q1)beginif clk'event and clk ='1'then q1<=d;end if;end process;q<=q1;end bhv;任务2:library ieee;use ieee.std_logic_1164.all;entity suocun isport (clk,d:in std_logic; q:out std_logic);end;architecture bhv of suocun isbeginprocess (clk,d)beginif clk='1'then q<=d;end if;end process;end;五.实验结果任务1:任务2:。
西南科技大学实验报告现代数字系统设计实验题目:直流电机的...
西南科技大学实验报告现代数字系统设计实验题目:直流电机的PWM控制专业班级:生物医学0502 _学生姓名:***学生学号: ********实验时间: 2个小时指导教师:***一、实验目的1.掌握直流电机的PWM 控制方法;2.锻炼VHDL 语言的编程能力。
二、实验原理及说明PWM 控制就是产生一定周期,占空比不同的方波信号,当占空比较大时,电机转速较高,否则电机转速较低。
当采用FPGA 产生PWM 波形时,只需FPGA 内部资源就可以实现,数字比较器的一端接设定值输出,另一端接线性递增计数器输出。
当线性计数器的计数值小于设定值时输出低电平,当计数器大于设定值时输出高电平,这样就可通过改变设定值,产生占空比不同的方波信号,从而达到控制直流电机转速的目的。
直流电机控制电路主要由2部分组成,如图1所示: ● FPGA 中PWM 脉宽调制信号产生电路; ● FPGA 中正/反转方向控制电路;速度等级设置模块锯齿波发生器(模16计数器)数字比较器模块旋转方向控制模块驱动电路Z (正转)F (反转)PWM 波形输出Z_F (正/反转控制信号)Rst (复位)Clk (时钟)Rst (复位)Level (速度等级按键)接数码管(显示速度等级)图1 直流电机PWM 控制电路三、实验步骤1.在QUARTUSII 软件下创建一工程,工程名为pwm_control ,芯片名为EP1C3T144C8,注意工程路径不要放到软件安装路径下;2.根据实验原理,自己编写VHDL 顶层设计文件实现直流电机的PWM 控制(整个设计要求全部采用VHDL 编写,不能采用原理图方式),参考程序如下:速度等级设置模块process(rst,level)beginif rst='1' thencnt4<=(others=>'0');elsif level='1' and level'event thencnt4<=cnt4+1;end if;end process;process(rst,clk)beginif rst='1' thenspeed<=(others=>'0');elsif clk'event and clk='1' thencase cnt4 isWHEN "00" => speed <= "0011" ;WHEN "01" => speed <= "0100" ;WHEN "10" => speed <= "0101" ;WHEN "11" => speed <= "0111" ;WHEN OTHERS => NULL ;END CASE ;end if;END PROCESS;数字比较器模块process(clk,rst)beginif rst='1' thenagb<='0';elsif clk'event and clk='1' thenif cnt16>speed thenagb<='1';elseagb<='0';end if;end if;end process;锯齿波发生器process(rst,clk)beginif rst='1' thencnt16<=(others=>'0');elsif clk='1' and clk'event thencnt16<=cnt16+1 ;end if;end process;旋转方向控制模块process(rst,clk)beginif rst='1' thenz<='0';f<='0';elsif clk'event and clk='1' thenif z_f='1' thenz<=agb;f<='0';elsez<='0';f<=agb;end if;end if;end process;3.对设计进行全编译;4.分别进行功能与时序仿真,验证逻辑功能;5.锁定引脚实验采用模式5,锁定引脚对照表如下信号键1 键2(level)键3clkz f level_display0level_display1引脚号1 2 3 9313213185 966.下载采用JA TG方式进行下载;7.将实验箱左上方直流电机处跳线位置插到直流允许端,(注意实验完毕后将此跳线插回直流禁止端),将右下方clock0频率改为65536Hz。
数字系统设计综合实验报告
数字系统设计综合实验报告1)实验目的复习加法器的分类及工作原理。
掌握用图形法设计半加器的方法。
掌握用元件例化法设计全加器的方法。
掌握用元件例化法设计多位加法器的方法。
掌握用Verilog HDL语言设计多位加法器的方法。
学习运用波形仿真验证程序的正确性。
学习定时分析工具的使用方法。
2)实验原理加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。
目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。
加法器可分为1位加法器和多位加法器两大类。
1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。
半加器如果不考虑来自低位的进位而将两个1位二进制数相加,称半加。
实现半加运算的电路则称为半加器。
若设A和B是两个1位的加数,S是两者相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到。
全加器在将两个1位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。
实现全加运算的电路则称为全加器。
若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到:3)实验内容及步骤用图形法设计半加器,仿真设计结果。
用原件例化的方法设计全加器,仿真设计结果用原件例化的方法设计一个4为二进制加法器,仿真设计结果,进行定时分析。
用Verilog HDL语言设计一个4为二进制加法器,仿真设计结果,进行定时分析。
分别下载用上述两种方法设计4为加法器,并进行在线测试。
4)设计1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2所示。
2)用元件例化的方法设计的全加器如图3所示,由其生成的符号如图4所示。
图三:图四:5)全加器时序仿真波形如图下图所示6)心得体会:第一次做数字系统设计实验,老师给我们讲了用图形法设计的全过程。
北京理工大学数字系统设计与实验报告
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 段译码器的显示逻辑。
华南理工大学数字系统设计实验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 编写的模块可以混搭在一个电路图中使用。
数字逻辑系统设计FPGA[实验][全加器]
实验一 全加器实验目的:1、设计一个全加器。
2、熟悉和掌握FPGA开发软件Quartus II的使用方法。
3、了解掌握用VHDL语言以不同的方式编程方法。
4、掌握电路设计仿真和硬件下载的方法。
实验器材1、SOPC实验箱2、计算机(装有Quartus II 7.0软件)实验预习1、阅读SOPC实验箱的相关资料,了解实验箱的使用方法。
2、预习Quartus II7.0基本使用方法,熟悉实验操作流程。
3、书写预习报告,必须有完整的VHDL设计程序及实验步骤。
实验原理1、1位全家器能实现2个二进制数含进位位的加法,其逻辑功能真值表如表-1,电路原理图如图1.0所示表-1 1 位全加器逻辑功能真值表A B Cin Sum Cout0 0 0 0 01 0 0 1 00 1 0 1 01 1 0 0 10 0 1 1 01 0 1 0 10 1 1 0 11 1 1 1 1图1.0 1 位全加器电路实验内容设计一个全加器,实现全家器的逻辑功能。
其输入由三位拨码开关提供,输出由五路LED指示,其中两路显示输出结果,另外三路显示输入拨码开关的状态。
注意:实验箱上的LED指示灯,低电位时亮,高电位时灭,注意电路最后的输出逻辑转换。
一、使用QUARTUS II建立工程1、打开QUARTUS II软件并建立工程选择开始>>程序>>Quartus II 7.0>> Quartus II 7.0(32-Bit)打开Quartus II 7.0软件。
也可以直接点击桌面上的Quartus II 7.0(32-Bit)图标打开Quartus II 7.0,软件界面如图1.1所示。
图1.1 Quartus II界面2、在图1.1中选择File>>New Project Wizard来新建一项工程。
在本实验指导书中,任何一个实验都是包含于一个项目中。
同时要区别“New Project Wizard”与“New”的关系,“New”是新建项目内的子文件用。
数字电路与系统设计实验
第二章 实验基本仪器
数字系统设计实验所需设备有: 直流稳压电源,示波器,基于CPLD的 数字电路实验系统,万用表,信号源, 计算机。
一、直流稳压电源
二、示波器
示波器是一种用来测量电信号波形的 电子仪器。用示波器能够观察电信号 波形,测量电信号的电压大小,周期 信号的频率和周期大小。双踪示波器 能够同时观察两路电信号波形。
能块相对集中地排列器件 3.布线顺序 VCC,GND,输入/输出,控制线 4. 仪器检测(电源,示波器,信号源) 5.实验 测试、调试与记录
6.撰写实验总结报告
(1)实验内容 (2)实验目的 (3)实验设备 (4)实验方法与手段 (5)实验原理图 (6)实验现象(结果)记录分析 (7)实验结论与体会
(((四三一)))、、、实实验实验目验的提内示容
•• 11..注测1意试.掌被T握T测LT器T器L件、件H7的CT4引和L脚HS7C器0和件4引的一脚传个输1特非4性门分。的别传接输地特和 十性5。V2。.掌握万用表的使用方法。
•• •
(2连为输23特二.接 被 入)..性将测测、123到 测 电。实试 试...被 非 压六六六验验HH反反反测 门 值所CC台相相相T器用非 的 。上器器器器件器门输4件777件7的入.444774输电LHH4KH入压SCCHΩC00T端。电C4400,旋位T片片44转R器0片T一电LR4的个T位一L输非的器个出门电改非端的压变门电传输非的压输出门传作特端的输性。
四、数字电路测试及故障查找、排除
1.数字电路测试
数字电路静态测试指的是给定数字电路若干组静态输 入值,测定数字电路的输出值是否正确。
数字系统设计实验报告计数器、累加器
实验五计数器设计一、实验目的: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 或 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、实验目的1)学习掌握数字系统综合设计方法。
2)学习掌握层次设计方法。
3)学习掌握设计下载方法。
4)学习掌握实验系统使用方法。
2、实验原理数字钟是对输入时基秒脉冲进行计数,依次输出秒数值、分数值、小时数值,从而确定时钟时间,其原理框图如下图所示。
实际的数字钟设计中还需要增加年月日的功能,这里框图中也省略了校时功能的结构。
3、实验内容1)选择XC2S200PQ208器件建立一个新的 工程。
2)在上述工程中,采用VHDL 语言的方法设计上述简易数字钟。
3)参考实验系统使用说明,按下列要求锁定引脚。
秒、分钟、小时由实验系统的J1、J2输出,显示输出的时分秒间隔一位数码管。
时钟输入由J7的1脚输入。
4)下载编程并验证设计结果。
4、实验设备1)清华同方P Ⅳ 2.4G\256M60G2)ISE 6.2i —Windows 软件系统3)多功能EDA 实验系统(V 型)5、实验步骤1)写出简易数字钟的设计程序。
2)画出简易数字钟的仿真波形。
秒分钟小时6、程序代码module clock (clk,ena,clr,clr1,clr2,secH,secL,minH,minL,houH,houL);input clk,ena,clr,clr1,clr2;output [3:0] secH,secL,minH,minL,houH,houL;reg [3:0] secTempH,secTempL,minTempH,minTempL,houTempH,houTempL;wire secLQ,secHQ,minLQ,minHQ,houLQ;always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P1//秒个位----------------------if(clr==1'b1)secTempL<=4'b0000;else if(clr1==1'b1)secTempL<=4'b1000;else if(clr2==1'b1)secTempL<=4'b1000;else beginif(ena==1'b1)beginif(secTempL==4'b1001)secTempL<=4'b0000;elsesecTempL<=secTempL+1'b1;endendendassign secL=secTempL;assign secLQ=secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//秒十位-------------------------always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P2if(clr==1'b1)secTempH<=4'b0000;else if(clr1==1'b1)secTempH<=4'b0101;else if(clr2==1'b1)secTempH<=4'b0101;else beginif(ena==1'b1&secLQ==1'b1)beginif(secTempH==4'b0101)secTempH<=4'b0000;else secTempH<=secTempH+1'b1;endendendassign secH=secTempH;assign secHQ=(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//secTempH=0101,secTempL=1001//分个位-----------------always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P3 if(clr==1'b1)minTempL<=4'b0000;else if(clr1==1'b1)minTempL<=4'b1000;else if(clr2==1'b1)minTempL<=4'b1000;else beginif(ena==1'b1&secHQ==1'b1)beginif(minTempL==4'b1001)minTempL<=4'b0000;elseminTempL<=minTempL+1'b1;endendendassign minL=minTempL;assign minLQ=minTempL[3]&(~minTempL[2])&(~minTempL[1])&minTempL[0] &(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//minTempL=1001,secTempH=0101,secTempL=1001//分十位------------------always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P4 if(clr==1'b1)minTempH<=4'b0000;else if(clr1==1'b1)minTempH<=4'b0101;else if(clr2==1'b1)minTempH<=4'b0101;else beginif(ena==1'b1&minLQ==1'b1)beginif(minTempH==4'b0101)minTempH<=4'b0000;elseminTempH<=minTempH+1'b1;endendendassign minH=minTempH;assign minHQ=(~minTempH[3])&minTempH[2]&(~minTempH[1])&minTempH[0] &minTempL[3]&(~minTempL[2])&(~minTempL[1])&minTempL[0]&(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//minTempH=0101,minTempL=1001,secTempH=0101,secTempL=1001//时个位--------------always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P5if(clr==1'b1)houTempL<=4'b0000;else if(clr1==1'b1)houTempL<=4'b1001;else if(clr2==1'b1)houTempL<=4'b0011;else beginif(ena==1'b1&minHQ==1'b1)beginif(houTempL==4'b1001)houTempL<=4'b0000;else if(houTempL==4'b0011&houTempH==4'b0010)houTempL<=4'b0000;elsehouTempL<=houTempL+1'b1;endendendassign houL=houTempL;assign houLQ=((~houTempH[3])&(~houTempH[2])&houTempH[1]&(~houTempH[0])&(~houTempL[3])&(~houTempL[2])&houTempL[1]&houTempL[0]|houTempL[3]&(~houTempL[2])&(~houTempL[1])&houTempL[0])&(~minTempH[3])&minTempH[2]&(~minTempH[1])&minTempH[0]&minTempL[3]&(~minTempL[2])&(~minTempL[1])&minTempL[0]&(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//(houTempH=0010,houTempL=0011|houTempL=1001),minTempH=0101,minTempL=1001,secTe mpH=0101,secTempL=1001//时十位----------------always@(posedge clk or posedge clr or posedge clr1 or posedge clr2)begin:P6if(clr==1'b1)houTempH<=4'b0000;else if(clr1==1'b1)houTempH<=4'b0001;else if(clr2==1'b1)houTempH<=4'b0010;else beginif(ena==1'b1&houLQ==1'b1)beginif(houTempH==4'b0010&houTempL==4'b0011)houTempH<=4'b0000;elsehouTempH<=houTempH+1'b1; endendendassign houH=houTempH; endmodule7、仿真波形。
数字系统设计 实验报告
数字系统设计实验报告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连接的是电路板的音调控制,将两个键自由组合按下,可以明显听到发出三种不同的音调。
因此可以验证设计无误。
数字电路与系统设计实验报告
数字电路与系统设计实验报告学院:班级:姓名:实验一基本逻辑门电路实验一、实验目的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上搭建电路,编译,下载到实验板上进行验证。
数字系统电路实验报告(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. 计数器实验通过搭建同步计数器和异步计数器电路,实现了加法计数和定时功能,验证了实验原理的正确性。
数字系统设计(VHDL)课程教学改革与实践
数字系统设计(VHDL)课程教学改革与实践数字系统设计(VHDL)是本科院校电类专业学生的一门专业课,其发展日新月异,如何更好的培养学生的实践能力,使教学内容能够紧跟技术发展前沿已经成为当前教学的重要研究课题,为此文章提出了突出实践能力的综合考核方式,以及实验内容与电子设计大赛相结合的教学改革方法。
标签:数字系统设计;电子设计大赛;实践能力;教学改革1 研究背景《数字系统设计(VHDL)》是一种软硬件合一的数字电子设计技术,它的设计语言采用硬件描述语言,以EDA软件为工作平台,以专用集成电路为实现载体,来设计复杂的电路系统,代表了现代电子设计方法的主流趋势[1]。
因此该课程具有较高的理论性和实践性,而且更加注重实践。
独立学院的方针是培养应用型人才,而且从全国近几年大学生电子设计大赛的题目来看,利用EDA技术完成的竞赛题目所占比例逐年提高,题目更加灵活多变,要求也越来越高,这些变化反应出目前业界对当代工科电类专业大学生技能掌握的需求方向。
基于以上两点,针对数字系统设计课程的实践教学环节进行改革与创新,切实提高学生应用EDA技术设计电路的能力,是独立学院电信类专业课程建设的一项重要任务,具有极高的应用价值。
但在当前“数字系统设计(VHDL)”课程的教学环节仍存在着若干弊端[2],需要引起重视并想办法加以解决。
本文对该课程的理论与实践教学方法、考试方法提出三点建议,以期改进教学方法,提高教学效果,使该课程在培养学生的创新实践能力中起到应有的作用。
2 教学中存在的问题2.1 课程内容缺乏前沿性、连贯性,重点不突出许多现有的教材内容上更新速度慢,缺乏前沿性,不能全面展示数字系统设计技术的新成果和发展趋势;编写上缺乏完整的课程观,章节结构不合理,重点不突出,理论叙述多而配套的实验和习题少。
导致学生没有明确课程目标,对课程内容感到枯燥、乏味,学习积极性不高。
2.2 教学方法单调,教与学结合不紧传统教学方法以教师讲授为主,学生在封闭的课堂环境下获取数字系统设计知识,方式单调,互动有限,缺少及时动手实践的机会。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多周期MIPS微处理器设计一、实验目的(1)、熟悉MIPS指令系统。
(2)、掌握MIPS多周期微处理器的工作原理和实现方法。
(3)、掌握控制器的微程序设计方法。
(4)、掌握MIPS多周期微处理器的测试方法。
(5)、了解用软件实现数字系统设计的方法。
二、实验任务设计一个32位MIPS多周期微处理器,具体的要求如下:1、至少运行下列的6类32条MIPS指令。
(1)、算术逻辑指令:ADD、ADDU、SUB、SUBU、ADDI、ADDIU。
(2)、逻辑运算指令:AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU。
(3)、位移指令:SLL、SLLV、SRL、SRLV、SRA。
(4)、条件分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。
(5)、无条件跳转指令:J、JR。
(6)、数据传送指令:LW、SW。
2、在XUP Virtex-2 Pro开发系统中实现该32位MIPS多周期微处理器,要求运行速度(CPU 工作时钟)大于25MHz。
三、实验设备1、装有ISE、Modelsim SE和Chipscope Pro软件的计算机。
2、XUP Virtex-2 pro开发系统一套。
3、SVGA显示器一台。
四、MIPS指令简介MIPS指令集具有以下特点:1、简单的LOAD/STORE结构:所有的计算机类型的指令均从寄存器堆中读取数据并把结果写入寄存器堆中,只有LOAD和STORE指令访问存储器。
2、易于流水线CPU的设计:MIPS指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。
3、易于编译器的开发:一般来讲,编译器在编译高级语言程序时,很难用到复杂的指令,MIPS指令的寻址方式非常的简单,每条指令的操作也非常简单。
MIPS系统的寄存器结构采用标准的32位寄存器堆,共32个寄存器,标号为0-31。
其中第0号寄存器永远为常数0。
CPU所支持的MIPS指令格式一共有3种,分别为R、I、J。
R类型的指令从寄存器堆中读出两个源操作数,计算结果写回到寄存器堆;I类型的指令使用一共16为立即数作为源操作数;J类型的指令使用一共26位立即数作为跳转的目标地址(target address)。
MIPS的指令格式如图1所示,指令格式中OP(operation)是指令操作码;RS(register sourse)是源操作数的寄存器号;RD(register destination)是目标寄存器号;RT(register target)可以既是源寄存器号,又可以使目标寄存器号,由具体位置决定;FUNCT(function)可以被认为是扩展的操作码;SA(shift amount)由移位指令使用,定义移位位数。
I型中的Immediate是16为立即数。
立即数型算术逻辑运算指令、数据传输指令和条件分支指令均采用这种形式。
在立即数型算术逻辑运算指令、数据传送指令中,Immediate进行符号扩展至32位;而在条件分支指令中,Immediate先进行符号扩展至32位再左移2位。
在J形指令中26为target由JUMP指令使用,用于产生跳转的目标地址。
下面通过表格简单介绍本实验使用的MIPS核心指令。
表1列出了本实验使用到的MIPS指令的格式和OP、FUNCT等简要信息。
五、实验原理以及相应Verilog HDL代码图2所示为可实现上述指令的多周期MIPS微处理器的原理框图,根据功能将其分划分为控制单元(cunit)、执行单元(eunit)、指令单元(iunit)以及存储单元(munit)四大模块。
控制单元(cunit)是多周期微处理器的核心,控制微处理器取指令、指令译码和指令执行等工作。
主要由指令译码器控制器(outputs control)、算术逻辑运算控制器(ALU control)两个子模块组成。
执行单元(eunit)主要由寄存器堆(registers)和算术逻辑单元(ALU)两个子模块组成。
其中寄存器是微处理器最基本的元素,MIPS系统的寄存器堆由32个32位寄存器组成;而ALU则是微处理器的主要功能部件,执行加、减、比较等算术运算和与、或、或非、异或等逻辑运算。
这里需要说明的是,图2所示的原理框图中未画出ANDI、ORI、XORI三条指令所需的16位立即数“0扩展”至32位立即数电路,设计时可以将“0扩展”电路功能放在ALU内部完成。
图 2多周期CPU框图指令单元(iunit)的作用是决定下一条指令的地址(PC值)。
存储单元(munit)由存储器(memory)、指令寄存器(instruction register)和存储数据寄存器(memory data register)组成。
1、控制单元(cunit)的设计。
控制单元模块主要作用是通过机器码解析出指令,并根据解析结果控制数据通道工作流程。
控制模块的接口信息如表2所示。
1)、Outputs Control控制器的设计Outputs Control控制器的主要作用是取出指令,并根据指令确定各个控制信号的值。
首先对指令进行分类。
(1)、R型指令。
根据操作数来源可分为R_type1、R_type2和JR三类。
其中,R_type1指令中的两个操作数为寄存器rs、rt;R_type2为三个移位指令,操作数为指令中的sa字段和寄存器rt;JR指令只有一个操作数rs。
根据各指令执行的特点,本实验设计时,将各指令进行了分类:R_type1:包括指令ADD、ADDU、SUB、SUBU、AND、OR、NOR、XOR 、SLT、SLTU、SLLV、SRLV、SRAV。
R_type2:包括指令SLL、SRL、SRA。
JR_type:包括指令JR。
(2)、J型指令。
J_type:包括指令J。
(3)、立即数指令。
I_type:包括指令ADDI、ADDIU、ANDI、ORI、XORI、SLTI、SLTIU。
(4)、分支指令。
Branch:包括指令BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。
(5)、数据传输指令。
LW:包括指令LW。
SW:包括指令SW。
MIPS指令的执行步骤不尽相同。
分支和跳转指令需要3个周期,R型指令和立即数指令需要4个周期,数据传送指令需要4-5个周期。
表3列出了各类指令执行步骤。
从原理框图(图2)我们可以看出,整个CPU中,一共有13组控制信号,○1、RegDst,决定目标寄存器是rt还是rd。
RegDst=0时,rt为目标寄存器。
RegDst=1时,rd为目标寄存器。
○2、RegWrite,决定是否对寄存器(registers)进行写操作。
RegWrite有效时,将数据写入指定的寄存器中。
○3、MemWrite,决定是否对存储器(memory)进行写操作。
MemWrite有效时,将数据写入存储器指定的位置。
○4、MemRead,决定是否对存储器(memory)进行读操作。
MemRead有效时,读取存储器指定位置的数据。
○5、MemtoReg,决定写入寄存器(registers)的数据来自ALUOut还是MDR。
MemtoReg=0时,数据来自ALU。
MemtoReg=1时,数据来自存储器。
✧以上5组控制信号与单周期MIPS CPU中的各个信号一致。
○6、IorD,.决定存储器地址由PC还是ALUOut提供。
IorD=0时,存储器地址来自于PC。
IorD=1时,存储器地址来自于ALU。
○7、IRWrite,决定是否对指令寄存器(IR)进行写操作。
IRWrite有效时,将指令写入指令寄存器中。
○8、PCWrite,决定是否对PC寄存器进行写操作。
PCWrite有效时,对PC寄存器进行写操作;源由PCSource决定。
○9、PCWriteCond在Zero有效的前提下,决定是否对PC寄存器进行写操作。
PCWrite有效时,同时Zero亦有效,对PC寄存器进行写操作。
✧以上9组控制信号均为1位控制信号,而以下4组信号均为2位控制信号。
○10、ALUSrcA,决定ALU第一操作数来源。
ALUSrcA=00时,ALU第一操作数来源于PC。
ALUSrcA=01时,ALU第一操作数来源于寄存器A。
ALUSrcA=10时,ALU第一操作数来源于0扩展的5○11、ALUSrcB,决定ALU第二操作数来源。
ALUSrcB=00时,ALU第二操作数来源于寄存器B。
ALUSrcB=01时,ALU第二操作数为常数“4”。
ALUSrcB=10时,ALU第二操作数来源于符号扩展的16位Imm。
ALUSrcB=11时,ALU第二操作数来源于符号扩展后左移两位的16位Imm。
○12、ALUOp,决定ALU的操作。
ALUOp=00时,ALU进行加操作。
ALUOp=01时,由指令中的op及rt决定。
ALUOp=10时,由指令中的funct决定。
ALUOp=11时,由指令中的op决定。
○13、PCSource,决定写入PC寄存器的来源。
PCSource=00时,写入值为下一条指令的地址PC+4。
PCSource=01时,写入值为ALU计算出的分支地址。
PCSource=10时,写入值为跳转地址。
根据表3所示的指令的执行步骤与指令功能,可以画出Output Control模块的有限状态机图,如图3所示。
从图3中我们可以看出,除了第一周期和第二周期对所有的指令都一样外,在其它周期,不同指令的操作不同,因此控制信号也可能不同:第1周期----取指操作过程:①IR<= Memory[PC];②PC=PC+4设置控制信号:①MemRead有效;②IRWrite有效;③IorD=0;④ALUSrcA=00;⑤ALUSrcB=01;⑥ALUOp=00;⑦PCSource=00;⑧PCWrite有效。
第2周期----指令译码和读取寄存器操作过程:①A <= IR[25:21] B<= IR[20:16];②ALUOut <= PC+ (sign-extend(IR[15:0])<<2)设置控制信号:①ALUSrcA=00;②ALUSrcB=11;③ALUOp=00。
第3周期----指令执行、存储地址的计算或分支的完成在这一周期内CPU的具体操作取决于不同类型的指令。
我们将本实验需要实现的指令分成六类来讨论:I. 存储器访问指令(LW、SW)II. R型指令(除移位指令)— R_type1、JR_typeIII. 移位指令— R_type2Ⅳ. I型指令— I_typeⅤ. 跳转指令— J_typeⅥ. 分支指令— BranchI. 存储器访问指令(LW、SW)操作过程:ALUOut <= A + (sign-extend(IR[15:0]))设置控制信号:①ALUSrcA=01;②ALUSrcB=10;③ALUOp=00II. R型指令(除移位指令)操作过程:ALUOut <= A op B设置控制信号:①ALUSrcA=01;②ALUSrcB=00;③ALUOp=10III. 移位指令操作过程:ALUOut <= B op (zero-extend(IR[10:6]))设置控制信号:①ALUSrcA=10;②ALUSrcB=00;③ALUOp=10Ⅳ. I型指令操作过程:ALUOut <= A op (sign-extend(IR[15:0]))设置控制信号:①ALUSrcA=01;②ALUSrcB=10;③ALUOp=11Ⅴ. 跳转指令操作过程:PC<= { PC[31:28], IR[25:0], 2’b00 }设置控制信号:①PCWrite有效;②PCSource=10Ⅵ. 分支指令操作过程:if ( condition==1 ) PC<= ALUOut分支条件成立时设置控制信号:①ALUSrcA=01;②ALUSrcB=00;③ALUOp=01;④PCSource=01;⑤PCWriteCond有效第4周期----存储器的访问、R型/I型指令的完成。