数字系统设计大作业
- 格式:docx
- 大小:145.85 KB
- 文档页数:12
摘要银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源,如果不是安全状态,则不能为申请资源的进程分配资源。
银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,·如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。
如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。
若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。
论文首先对算法的设计从总体上进行了分析,然后分析各个细节,再对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行调试和测试,最后进行组装测试及系统测试,使其成为一个可以用来判断系统安全状态的程序。
关键词:可用资源最大需求矩阵分配矩阵需求矩阵安全性算法安全序列目录一、绪论 (3)二、需求分析 (4)三、算法分析 (5)四、详细设计 (6)五、程序调试 (9)六、总结 (11)参考文献 (12)附录(源代码) (13)一、绪论Dijkstra (1965)提出了一种能够避免死锁的调度算法,称为银行家算法。
它的模型基于一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,每个客户都有一个贷款额度,银行家知道不可能所有客户同时都需要最大贷款额,所以他只保留一定单位的资金来为客户服务,而不是满足所有客户贷款需求的最大单位。
这里将客户比作进程,贷款比作设备,银行家比作系统。
客户们各自做自己的生意,在某些时刻需要贷款。
在某一时刻,客户已获得的贷款和可用的最大数额贷款称为与资源分配相关的系统状态。
一个状态被称为是安全的,其条件是存在一个状态序列能够使所有的客户均得到其所需的贷款。
数字系统设计夏语闻第十五章例题摘要:一、引言二、数字系统设计概述三、夏语闻第十五章例题解析1.题目一2.题目二3.题目三四、例题解答过程1.题目一1.问题分析2.解答步骤3.答案2.题目二1.问题分析2.解答步骤3.答案3.题目三1.问题分析2.解答步骤3.答案五、总结正文:一、引言数字系统设计是计算机科学与技术领域中的一个重要分支,夏语闻所著的《数字系统设计》一书,以其深入浅出的讲解和丰富的例题,受到了广大读者的欢迎。
本文将对夏语闻第十五章的例题进行解析,以帮助读者更好地理解和掌握数字系统设计的相关知识。
二、数字系统设计概述数字系统设计主要研究数字电路的原理、设计和应用,包括组合逻辑电路、时序逻辑电路、存储器和微处理器等方面的内容。
数字系统设计在计算机科学、通信、控制等领域具有广泛的应用。
三、夏语闻第十五章例题解析本章共包括三道例题,分别为题目一、题目二和题目三。
1.题目一假设有一个4 位全加器,输入为A、B、C、D,求输出。
2.题目二设计一个4 位并行加法器,输入为A、B、C、D,输出为S。
3.题目三设计一个4 位并行乘法器,输入为A、B,输出为P。
四、例题解答过程1.题目一问题分析:题目要求求解4 位全加器的输出。
解答步骤:1) 根据全加器的真值表,列出输入与输出的对应关系;2) 代入题目给定的输入值,计算输出;3) 输出结果为S0、S1、S2、S3。
答案:S0、S1、S2、S3。
2.题目二问题分析:题目要求设计一个4 位并行加法器。
解答步骤:1) 根据加法器的原理,分析输入与输出的关系;2) 设计逻辑电路,实现输入到输出的映射;3) 给出加法器的真值表。
答案:根据设计原理和真值表,可得出加法器的输出。
3.题目三问题分析:题目要求设计一个4 位并行乘法器。
解答步骤:1) 根据乘法器的原理,分析输入与输出的关系;2) 设计逻辑电路,实现输入到输出的映射;3) 给出乘法器的真值表。
答案:根据设计原理和真值表,可得出乘法器的输出。
,考试作弊将带来严重后果!华南理工大学期末考试《数字系统设计》试卷1. 考前请将密封线内各项信息填写清楚;所有答案请直接答在试卷上(或答题纸上);.考试形式:开(闭)卷;(每小题2分,共16分)大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理( C )CPLD即是现场可编程逻辑器件的英文简称;CPLD是基于查找表结构的可编程逻辑器件;早期的CPLD是从GAL的结构扩展而来;在Altera公司生产的器件中,FLEX10K 系列属CPLD结构;在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )then ...;then ...;then ...;在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确( A )PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一.敏感信号参数表中,应列出进程中使用的所有输入信号;进程由说明部分、结构体部分、和敏感信号参数表三部分组成;当前进程中声明的信号也可用于其他进程基于EDA软件的FPGA / CPLD设计流程,以下流程中哪个是正确的:( C )原理图/HDL文本输入→适配→综合→时序仿真→编程下载→功能仿真→硬件测试原理图/HDL文本输入→功能仿真→综合→时序仿真→编程下载→适配→硬件测试;原理图/HDL文本输入→功能仿真→综合→适配→时序仿真→编程下载→硬件测试原理图/HDL文本输入→适配→时序仿真→编程下载→功能仿真→综合→硬件测试。
关于综合,从输入设计文件到产生编程文件的顺序正确的是:(B).逻辑综合→高层次综合→物理综合;B. 高层次综合→逻辑综合→物理综合;C. 物理综合→逻辑综合→高层次综合;D. 高层次综合→逻辑综合→时序综合;6. 进程中的信号赋值语句,其信号更新是( C )A. 按顺序完成;B. 比变量更快完成;C. 在进程的挂起时完成;D. 都不对。
数字系统设计与VHDL课程大作业霓虹灯电路设计学院: 计算机科学与工程班级:计算机科学与技术一班学号:1305010126姓名:唐艳香组员:郑林升,袁博,唐艳香实验内容:1)使用平台上的8个七段数码管进行显示,即围绕平台上的8个数码管转圈;2)要求同时显示的段数为1、2、3段可选;3)可进行顺向、逆向显示(通过某一开关键进行选择);4)按下复位键后,重新开始旋转;5)多种点亮方式自选,如全亮等。
总体模块划分:1)定义输入输出端;2)由于只有一个主程序,所有模块都直接添加在里面。
主程序中可瞧做复位,旋转方向,旋转速度,旋转块数的小程序结合;3)建立波形图,进行仿真;4)绑定引脚,下载程序进行测试;5)修正小bug。
代码实现:library ieee;use ieee、std_logic_1164、all;use ieee、std_logic_arith、all;use ieee、std_logic_unsigned、all;entity water_lamp isgeneric(n:integer:=60000);port(clk_sys:in std_logic;order:in std_logic;k:in std_logic;q:in std_logic;num:in std_logic_vector(2 downto 0);L:out std_logic_vector(7 downto 0);LED:out std_logic_vector(7 downto 0)); end water_lamp;architecture one of water_lamp issignal cnt:integer range 0 to n;signal cnt1:integer range 0 to n;signal cnt2:integer range 0 to n;signal clk_new:std_logic;signal cnm:integer range 19 downto 0;signal cnm0:integer range 19 downto 0;signal clk_new1:std_logic;signal clk_new2:std_logic_vector(0 to 1):="00"; beginp1:process(clk_sys)beginif clk_sys'event and clk_sys='1' thenif cnt<integer(n/2)-1 thencnt<=cnt+1;elsecnt<=0;clk_new<=not clk_new;end if;end if;end process p1;p2:process(clk_new)variable LED_tmp:std_logic_vector(7 downto 0); beginif clk_new'event and clk_new='1' thenif order='0'thenif cnm>0 thencnm<=cnm-1;elsecnm<=19;end if;elseif cnm<19 thencnm<=cnm+1;elsecnm<=0;end if;end if;end if;end process p2;p3:process(cnm,num,clk_sys,cnt1,cnt2,clk_new2) beginif num="001" thencnm0<=cnm;elsif num="011" thenif clk_sys'event and clk_sys='1'thenif cnt1<integer(n/1000) thencnt1<=cnt1+1;elsecnt1<=0;clk_new1<=not clk_new1;end if;end if;if clk_new1='0' thencnm0<=cnm;elseif cnm=19 thencnm0<=0;elsecnm0<=cnm+1;end if;end if;elsif num="111" thenif clk_sys'event and clk_sys='1'thenif cnt2<integer(n/1000) thencnt2<=cnt2+1;elsecnt2<=0;if clk_new2="00" thenclk_new2<="01";cnm0<=cnm;elsif clk_new2="01" thenclk_new2<="10";if cnm=19 thencnm0<=0;elsecnm0<=cnm+1;end if;elsif clk_new2="10" thenclk_new2<="00";if cnm=18 thencnm0<=0;elsif cnm=19 thencnm0<=1;elsecnm0<=cnm+2;end if;end if;end if;end if;end if;end process p3;p4:process(cnm0)beginif k='1' thencase cnm0 iswhen 0 =>L<="01111111";LED<="10000000"; when 1 =>L<="10111111";LED<="10000000"; when 2 =>L<="11011111";LED<="10000000"; when 3 =>L<="11101111";LED<="10000000"; when 4 =>L<="11110111";LED<="10000000"; when 5 =>L<="11111011";LED<="10000000"; when 6 =>L<="11111101";LED<="10000000"; when 7 =>L<="11111110";LED<="10000000"; when 8 =>L<="11111110";LED<="00000100"; when 9 =>L<="11111110";LED<="00001000"; when 10 =>L<="11111110";LED<="00010000"; when 11 =>L<="11111101";LED<="00010000"; when 12 =>L<="11111011";LED<="00010000"; when 13 =>L<="11110111";LED<="00010000"; when 14 =>L<="11101111";LED<="00010000"; when 15 =>L<="11011111";LED<="00010000"; when 16 =>L<="10111111";LED<="00010000"; when 17 =>L<="01111111";LED<="00010000"; when 18 =>L<="01111111";LED<="00100000"; when 19 =>L<="01111111";LED<="01000000"; when others =>LED<= "00000000";end case;else L<="11111111";LED<="00000000";end if;if q='1'then L<="00000000";LED<="11111111"; end if;end process p4;end one;仿真结果:(缩略图)(展开图)设计总结及心得体会:经过将近两周的学习与动手操作,终于将老师所布置的实验完成。
数字系统设计与VHDL课程大作业霓虹灯电路设计学院:计算机科学与工程班级:计算机科学与技术一班学号:1305010126姓名:唐艳香组员:郑林升,袁博,唐艳香实验内容:1)使用平台上的8个七段数码管进行显示,即围绕平台上的8个数码管转圈;2)要求同时显示的段数为1、2、3段可选;3)可进行顺向、逆向显示(通过某一开关键进行选择);4)按下复位键后,重新开始旋转;5)多种点亮方式自选,如全亮等。
总体模块划分:1)定义输入输出端;2)由于只有一个主程序,所有模块都直接添加在里面。
主程序中可看做复位,旋转方向,旋转速度,旋转块数的小程序结合;3)建立波形图,进行仿真;4)绑定引脚,下载程序进行测试;5)修正小bug。
代码实现:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity water_lamp isgeneric(n:integer:=60000);port(clk_sys:in std_logic;order:in std_logic;k:in std_logic;q:in std_logic;num:in std_logic_vector(2 downto 0);L:out std_logic_vector(7 downto 0);LED:out std_logic_vector(7 downto 0)); end water_lamp;architecture one of water_lamp issignal cnt:integer range 0 to n;signal cnt1:integer range 0 to n;signal cnt2:integer range 0 to n;signal clk_new:std_logic;signal cnm:integer range 19 downto 0;signal cnm0:integer range 19 downto 0;signal clk_new1:std_logic;signal clk_new2:std_logic_vector(0 to 1):="00"; beginp1:process(clk_sys)beginif clk_sys'event and clk_sys='1' thenif cnt<integer(n/2)-1 thencnt<=cnt+1;elsecnt<=0;clk_new<=not clk_new;end if;end if;end process p1;p2:process(clk_new)variable LED_tmp:std_logic_vector(7 downto 0); beginif clk_new'event and clk_new='1' thenif order='0'thenif cnm>0 thencnm<=cnm-1;elsecnm<=19;end if;elseif cnm<19 thencnm<=cnm+1;elsecnm<=0;end if;end if;end if;end process p2;p3:process(cnm,num,clk_sys,cnt1,cnt2,clk_new2) beginif num="001" thencnm0<=cnm;elsif num="011" thenif clk_sys'event and clk_sys='1'thenif cnt1<integer(n/1000) thencnt1<=cnt1+1;elsecnt1<=0;clk_new1<=not clk_new1;end if;end if;if clk_new1='0' thenelseif cnm=19 thencnm0<=0;elsecnm0<=cnm+1;end if;end if;elsif num="111" thenif clk_sys'event and clk_sys='1'then if cnt2<integer(n/1000) thencnt2<=cnt2+1;elsecnt2<=0;if clk_new2="00" thenclk_new2<="01";cnm0<=cnm;elsif clk_new2="01" thenclk_new2<="10";if cnm=19 thencnm0<=0;elseend if;elsif clk_new2="10" thenclk_new2<="00";if cnm=18 thencnm0<=0;elsif cnm=19 thencnm0<=1;elsecnm0<=cnm+2;end if;end if;end if;end if;end if;end process p3;p4:process(cnm0)beginif k='1' thencase cnm0 iswhen 0 =>L<="01111111";LED<="10000000";when 1 =>L<="10111111";LED<="10000000";when 2 =>L<="11011111";LED<="10000000";when 3 =>L<="11101111";LED<="10000000";when 4 =>L<="11110111";LED<="10000000";when 5 =>L<="11111011";LED<="10000000";when 6 =>L<="11111101";LED<="10000000";when 7 =>L<="11111110";LED<="10000000";when 8 =>L<="11111110";LED<="00000100";when 9 =>L<="11111110";LED<="00001000";when 10 =>L<="11111110";LED<="00010000";when 11 =>L<="11111101";LED<="00010000";when 12 =>L<="11111011";LED<="00010000";when 13 =>L<="11110111";LED<="00010000";when 14 =>L<="11101111";LED<="00010000";when 15 =>L<="11011111";LED<="00010000";when 16 =>L<="10111111";LED<="00010000";when 17 =>L<="01111111";LED<="00010000";when 18 =>L<="01111111";LED<="00100000";when 19 =>L<="01111111";LED<="01000000";when others =>LED<= "00000000";end case;else L<="11111111";LED<="00000000";end if;if q='1'then L<="00000000";LED<="11111111";end if;end process p4;end one;仿真结果:(缩略图)(展开图)设计总结及心得体会:经过将近两周的学习与动手操作,终于将老师所布置的实验完成。
数字系统设计综合实验报告实验名称:1、加法器设计2、编码器设计3、译码器设计4、数据选择器设计5、计数器设计6、累加器设计7、交通灯控制器设计班级:姓名:学号:指导老师:实验1 加法器设计1)实验目的(1)复习加法器的分类及工作原理。
(2)掌握用图形法设计半加器的方法。
(3)掌握用元件例化法设计全加器的方法。
(4)掌握用元件例化法设计多位加法器的方法。
(5)掌握用Verilog HDL语言设计多位加法器的方法。
(6)学习运用波形仿真验证程序的正确性。
(7)学习定时分析工具的使用方法。
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为二进制加法器,仿真设计结果,进行定时分析。
(5)分别下载用上述两种方法设计4为加法器,并进行在线测试。
4)设计1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2所示。
数字系统设计实验报告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节中的设计步骤,我们定义输入数据的格式和表示方法,然后实现加法器的逻辑电路和控制电路。
08级“数字系统设计”期末考试参考答案一、填空(每空1分,共15分)1. 52.互补(m i=M i')3.RS触发器、RS=04.输入、电路的原状态5.实体说明、结构体6.低电平7.168.09.时钟10.A1、A2…… An中有奇数个111.同步、异步二、单项选择题(每小题1分,共10分)1.( C )2.( C )3.( D )4.( A )5.( B )6.( C )7.( C )8.( B )9.( D )10.( A )三、判断改错题(判断下列命题是否正确,若错误,请改正过来,每小题2分,共20分)1.错,可以定义其类型为STD_LOGIC,但是不能是BIT,因为BIT类型不能表示高阻态。
2.对。
3.错,OC门能完成“线与”逻辑功能,而TTL与非门不允许线与。
4.对。
5.错,多余的输入端可以接地,或与有用输入端并接。
()6.对。
7.对。
8.对。
9.错,两个状态等价的条件是,所有输入情况下它们对应的输出以及次态都是相同的。
10.错,奇偶校验可以检测出奇数个码元发生错误的情况四、逻辑函数化简,写出步骤(4+6=10分)1.方法一:F(A,B,C,D)=(ABCD)'+( ABC)'D+(AB)'CD+(AB)'CD'+A'BCD'+ABC'D+ABCD'+A(BCD)' +AB'CD'=A'+B'+C'+D'+(A'+B'+C')D+( A'+B')CD+( A'+B')CD'+A'BCD'+ABC'D+ABCD'+A(B'+C '+D')+ AB'CD'= A'+B'+C'+D'方法二:由函数式可画出卡诺图如下:由卡诺图化简得:F= A'+B'+C'+D'2.输入ABCD为8421BCD码,故取值为0000~1001,当取值为0000、0011、0110、1001时,F=1,取其他的8421BCD码时,输出为0;1010~1111为无关项,由此可画出卡诺图如下:F=A'B'C'D'+AD+B'CD+BCD'五、按要求完成下列各题,并写出分析步骤(5+6+6=17分)1.(5分)分析下面的电路是否存在竞争-冒险现象?由逻辑电路图可写出函数表达式:F=AC+A'C'+A'B,当B=C=1时,F=A+A',故该电路存在竞争-冒险现象2.(6分)方法一:74283的输出S= A4A3A2A1+ B4B3B2B1+C0= ABCD+A'A'0A'输入ABCD是余3码,即取值范围为:0011~1100当ABCD=0011~0111时,A=0,74283的输出S=ABCD+1101=0000~0100当ABCD=1000~1100时,A=1,74283的输出S=ABCD+0000=ABCD即:对于十进制数0~4的余3码,该电路输出0000~0100;对于十进制5~9的余3码,该电路输出为1000~1100——5421码输出故该电路的功能是将余3码转换成5421码输出方法二:74283的输出S= A4A3A2A1+ B4B3B2B1+C0= ABCD+A'A'0A'输入ABCD是余3码,即取值范围为:0011~1100,列出真值表如下:由真值表可知,该电路的功能是将余3码转换成5421码。
2014数字系统设计与VHDL课程大作业数字系统设计与VHDL课程大作业具体要求一、总体要求:1.本课程为专业必选类课程,以大作业加考试成绩的形式给定最终成绩。
2.每2-3人为一组,自由组合,分工合作。
相同的选题不得超过三组。
3.所有作业需完成VHDL核心代码的设计,并采用QuartusII进行相关仿真并且平台实现,否则全组不及格。
4.要求在2周内全部内容。
第16周各小组推选一人向老师讲解题目设计思路、源代码分析、演示实验结果,具体时间地点待定。
5.每名同学于第18周提交一份设计报告,并由学习委员统一送交老师。
二、设计题目A.13级信息安全、计算机、网络工程大作业题目:题目一:数字频率计设计(平台实现)1)能对输入的方波信号频率进行采样;2)采样频率范围为0~5999999Hz,以1Hz为单位进行显示;3)采用七个七段数码管显示当前采样的频率值,如采样频率值为500HZ,则只显示500,而不显示00500(即前面两个0不显示);4)本电路系统板输入时钟为6MHz。
题目二:电子数字钟设计(平台实现)1)系统的输入时钟为平台上可选的四组输入之一;2)时间进制为24小时制,用6个数码管进行显示,第7个数码管用于进行时间的修改;3)另设YES键、TIME键、ALARM键,其要求与教材P215相同;4)由于系统平台没有扬声器,对时间报警采用一个发光二极管闪烁30秒。
题目三:万年历设计(平台实现)1)能显示年、月、日、星期2)年、月、日均需可调(需要哪些按键自己设计),星期随按万年历,不用设置;3)系统默认时间为2000年01月01日星期6。
格式:00-01-014)数码管不够,默认显示年月日,设计一个切换按钮,切换显示星期,显示在最右一个数码管即可。
题目四:竞赛抢答器设计(平台实现)1)抢答器的输入路数为8路;(8位二进制输入)2)当主持人宣布开始(拨下A7键时为有效),抢答时当某一方先按下按键,其他键则失效;3)用一个数码管显示抢中的路编号,并开始进行60秒倒计时(用两个数码管显示),时间到用一指示灯进行闪烁提示;4)A7键回位后,进行下一轮抢答。
5.1、下列标识符哪些是合法的,哪些是错误的?Count,8sum,a*b,_data,wait,initial,$latch合法的:Count,,wait,initial错误的:8sum,a*b,_data,,$latch5.2、下列数字的表示是否正确?6’d18,’Bx0,5’box110,’da30,10’d2,’hzF正确的:’Bx0,’da30,’hzF错误的:6’d18,5’box110,10’d2,6.3用行为语句设计一个8位计数器,每次在时钟的上升沿,计数器加1,当计数器溢出时,自动从零开始重新计数。
计数器有同步复位端。
Moudule(out,data,load,reset,clk);output[7:0] out;input[7:0] data;input load, clk, reset;reg[7:0]out;always @(posedge clk)beginif(!reset)out=8"h00;else if(load)out=data;elseout=out+1;endendmodule6.4设计一个4位移位寄存器module e(out_data, in_data, clk, clr);output[3: 0] out_data;input [3: 0]in_data;input clk,clr;reg[3: 0] out_dataalways @(posedge clk or posedge clr)beginif(clr) out_data <=0;endendmodule7.4试编写同步模5计数器程序,有进位输出和异步复位端。
module test_cnts(clk, reset, car, out);input clk,reset;output car,out;reg[2:0]cnt;reg car;wire[2:0]out;assign out=cnt;always@(posedge clk or negedge reset) beginif(!reset)begincntく=3’b000;car<=0;endelse beginif(cnt==3’b100)begincar<=3’b001;cnt<=3'b000:endelse begincntく=cnt+3’b001;car<=3’b000;endendendend module7.5编写4位串并转换程序reg[7:0] data;reg[2:0] cnt;always@(posedge clk or posedgerst)if(rst)reg <= 0;elsereg <= {reg[7:0],din};always@(posedge clk or posedge rst) if(rst)cnt <= 0;elseif(din_valid)if(cnt == 7)cnt <= 0;elsecnt <= cnt +1;elsecnt <= cnt;always@(posedge clk or posedgerst) if(rst)dout <= 0;dout_en <= 0;elseif(cnt == 7)dout <= data;dout_en <= 1;elsedout <= 0;dout_en <= 0;。
《数字系统设计》实验报告班级_______电信2班_________________ 姓名____潘俊俊_____________________ 学号___1309121091__________________实验1 组合电路的设计实验目的:熟悉ISE的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
实验内容:首先利用ISE完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形。
实验程序:ENTITY mux21a ISPORT (a, b, s: IN BIT;Y: OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINPROCESS (a, b, s)BEGINIF s='0' THEN y<=a; ELSE y<=b;END IF;END PROCESS;END ARCHITECTURE one;实验结果:1、综合电路图2、 仿真时序图实验分析:在0—275ns 内,s=0, 则输出a 波形;在275—685ns 内,s=1,则输出b 波形;在685ns 以后,s=0, 则输出a 波形;仿真结果与实验要求一致,故仿真结果正确。
实验2 时序电路的设计实验目的:熟悉ISE的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
实验任务:设计一个带使能输入及同步清0的增1/减1的3位计数器,并仿真。
实验程序:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity up_down isPort(clk,rst,en,up: in std_logic;Sum: out std_logic_vector(2 downto 0);Cout: out std_logic);End;Architecture a of up_down isSignal count: std_logic_vector(2 downto 0);BeginProcess(clk,rst)BeginIf rst=’0’ thenCount<=(others=>’0’);Elsif rising_edge(clk) thenIf en=’1’ thenCase up isWhen ‘1’ => count<=count+1;When others =>count<=count-1;End case;End if;End if;End process;Sum<=count;Cout <=’1’ when en=’1’ and ((up=’1’ and count=7) or (up=’0’ and count=0)) else ‘0’;End;实验结果:1、综合电路图2、仿真时序图实验分析:当rst=’0’ ,输出被清零;否则(rst=1,en=1)当up=1时,输出count<=count+1,若up=0,输出count<=count-1。
现代数字系统设计课程设计题目1.九九乘法表系统的设计.九九乘法表系统的设计试设计一个供儿童学习九九乘法表之用的数字系统,试设计一个供儿童学习九九乘法表之用的数字系统,该系统既可引导学习者跟随学该系统既可引导学习者跟随学习机连续背诵;也可随时查找任何两个1位十进制数的相乘结果。
位十进制数的相乘结果。
系统功能和技术指标九九乘法表系统能够自动或手动进行两个1位十进制数的乘法,并自动显示被乘数、乘数和乘积,该系统示意图如下图所示。
图中AA 和BB 分别为被乘数和乘数的外部输分别为被乘数和乘数的外部输入端,它们用入端,它们用 1位 BCD 码表示。
系统用十进制七段数字显示器显示被乘数A 、乘数B 和乘积M 的值,其中M 用2位十进制显示器显示。
位十进制显示器显示。
系统的功能和指标如下:系统的功能和指标如下:(1)自动进行乘法运算并显示。
用户将控制开关ARH 置逻辑1,则系统内部自动产生被乘数A ’和乘数B ’,并按常规的九九乘法表方式,依照一定速率自动进行 A ’= 0~9和 B ’= 0~9的乘法运算,即的乘法运算,即 A ’×B ’= 0 × 0,……,0×9;1×0,……,1×9;……;8×0;……,8×9;9×0,……,9×9。
相应有乘积M=0,……,0;0, ……,9;……;0,……,72;0,……,81等。
等。
由于被乘数和乘数的最大值为9,故配置1位十进制显示;而乘积最大值为81 ,则配置两位十进制数字显示。
则配置两位十进制数字显示。
(2)手动进行乘法运算并显示。
当控制开关ARH 为逻辑0时,则乘法表系统仅对外部输人被乘数AA 和乘数BB 的特定数据进行乘法运算并输出。
在手动工作状态时,分别采用两组4位开关产生被乘数和乘数的BCD 码输人。
码输人。
(3)乘法运算是以二进制数的乘法来进行的,而其结果要用变换器转换为2位 BCD 码输出,并应配有相应的显示译码器。
数字电子大型作业课程设计班级:姓名:学号:指导教师:二、设计要求(1)设计并制造用电子控制的调光控制器。
(2)控制器的控制信号输入用触摸开关。
三、总体设计(四号字、宋体、加粗)1、设计的总体原理框图(小四号字、宋体)2、工作原理该触摸式调光灯采用了两片CMOS数字集成电路,利用CMOS 电路输入阻抗极高的特点,可采用手触方式调光和关灯。
由于该电路采用单线进、出,对外连接仅两根导线,因此使用十分方便。
该装置的电路工作原理如图所示。
它是由压控振荡器、十进制计数器/分配器、调光开关电路以及电源电路等组成。
照明灯H串接在回路中,其工作状态取决于单向可控硅V5的供给电路工作。
F1、F2及阻容元件构成一个自激振荡器,平时F1的一个输入端通过R4接地,故振荡器不工作,也没有时钟信号输送到IC2CD4017中,故IC2的输出端保持初始状态。
一旦人手触及金属片TP1,其杂波作用到F1的输入端,于是IC2计数并分配给输入端Y0…Y8依次出现高电平。
由于Y0…Y7上设置的电阻值不同,其输出电流由小到大,经F3、F4整形缓冲后作用于VS的触发极,从而获得不同的触发导通角,使H具有不同的亮度。
由于该电路只连接IC2的5个输出端进行调光,故有5档调光功能,当Y8变为高电平时,IC2清零复位,然后又循环。
当调到哪一档亮度时,松开手,就保持在该亮度不变。
欲关熄电灯,可触摸TP2,此时相当于有一脉冲作用于IC2的复位端R,使IC2的Y0为空置,故H熄灭。
其中IC1采用CD4011,IC2采用CD4017,VS采用1A—3A/600V 的单向可控硅元件。
VS的导通角决定了H的亮度。
R8—R12的阻值可根据应用的具体情况加以调整。
其它元件特殊要求,可按图示数值选用四、各部分电路设计(四号字、宋体、加粗)1、电源电路设计2、信号输入电路设计3、压控振荡器电路设计4、十进制计数器/分配器电路设计5、调光开关电路设计五、设计的整体电路图六、设计总结(四号字、宋体、加粗)1、设计过程中遇到的问题及解决方法在本次设计过程中,第一难题是定时信号的设计,要求必须在双信号的控制下进行通行状态转换改变。