数字逻辑电路实验报告(七巧板设计)

合集下载

数字逻辑电路实验报告

数字逻辑电路实验报告

数字逻辑电路实验报告数字逻辑电路实验报告引言:数字逻辑电路是现代电子科技中的重要组成部分,它广泛应用于计算机、通信、控制系统等领域。

本实验旨在通过实际操作,加深对数字逻辑电路原理的理解,并通过实验结果验证其正确性和可靠性。

实验一:基本逻辑门的实验在本实验中,我们首先学习了数字逻辑电路的基本组成部分——逻辑门。

逻辑门是数字电路的基本构建单元,它能够根据输入信号的逻辑关系,产生相应的输出信号。

我们通过实验验证了与门、或门、非门、异或门的工作原理和真值表。

以与门为例,当且仅当所有输入信号都为高电平时,与门的输出信号才为高电平。

实验中,我们通过连接开关和LED灯,观察了与门的输出变化。

实验结果与预期相符,验证了与门的正确性。

实验二:多位加法器的设计与实验在本实验中,我们学习了多位加法器的设计和实现。

多位加法器是一种能够对多位二进制数进行加法运算的数字逻辑电路。

我们通过实验设计了一个4位全加器,它能够对两个4位二进制数进行相加,并给出正确的进位和和结果。

实验中,我们使用逻辑门和触发器等元件,按照电路图进行布线和连接。

通过输入不同的二进制数,观察了加法器的输出结果。

实验结果表明,多位加法器能够正确地进行二进制数相加,验证了其可靠性。

实验三:时序电路的实验在本实验中,我们学习了时序电路的设计和实验。

时序电路是一种能够根据输入信号的时间顺序产生相应输出信号的数字逻辑电路。

我们通过实验设计了一个简单的时序电路,它能够产生一个周期性的脉冲信号。

实验中,我们使用计数器和触发器等元件,按照电路图进行布线和连接。

通过改变计数器的计数值,观察了脉冲信号的频率和周期。

实验结果表明,时序电路能够按照设计要求产生周期性的脉冲信号,验证了其正确性。

实验四:存储器的设计与实验在本实验中,我们学习了存储器的设计和实现。

存储器是一种能够存储和读取数据的数字逻辑电路,它在计算机系统中起到重要的作用。

我们通过实验设计了一个简单的存储器,它能够存储和读取一个4位二进制数。

数字逻辑电路实验报告总结

数字逻辑电路实验报告总结

数字逻辑电路实验报告总结一、实验心路历程哎呀,数字逻辑电路实验可真是一段超级有趣又有点小折磨的经历呢!我刚接触这个实验的时候,就像走进了一个神秘的电路世界。

那些电路元件就像是一群小怪兽,我得想办法让它们乖乖听话。

我还记得刚开始的时候,我看着那些电路图,脑袋里就像一团乱麻。

但是我可没有被吓倒哦,我就一点点地去研究每个元件的功能,就像在探索一个个小秘密。

我拿着那些电路板,感觉自己就像是一个电路魔法师,要把这些小零件组合成一个神奇的电路。

二、实验内容与操作在实验过程中,有好多不同的电路要搭建呢。

比如说那个计数器电路,我得把那些触发器按照正确的顺序连接起来。

我一边看着电路图,一边小心翼翼地把元件插到电路板上,就怕插错了一个小地方,整个电路就罢工了。

还有那个译码器电路,要确保输入和输出的关系正确,我就反复地检查线路的连接,眼睛都快看花了。

每次给电路通电的时候,心里都超级紧张,就像在等待一场大惊喜或者大惊吓。

当电路正常工作的时候,那种成就感简直无法形容,就像是我创造了一个小奇迹一样。

三、实验中的困难与解决当然啦,实验也不是一帆风顺的。

我就遇到过电路怎么都不工作的情况。

我当时都快急死了,就像热锅上的蚂蚁。

我把电路检查了一遍又一遍,怀疑这个元件坏了,那个线路断了。

后来我突然发现,原来是有一个引脚没有接好,就这么一个小失误,就导致整个电路瘫痪。

找到问题之后,我赶紧把引脚接好,再通电的时候,电路就正常工作了。

这让我明白了,在做这种实验的时候,一定要超级细心,不能放过任何一个小细节。

四、实验收获通过这个数字逻辑电路实验,我可学到了不少东西呢。

我不仅对数字逻辑电路的原理有了更深刻的理解,还学会了如何耐心地去排查电路故障。

而且我的动手能力也大大提高了,以前我看到那些电路元件就发怵,现在我能熟练地把它们组合起来,做出各种有趣的电路。

这个实验就像是一个小挑战,我成功地战胜了它,感觉自己变得更强大了呢。

数字电路与逻辑设计实验报告

数字电路与逻辑设计实验报告

数字电路与逻辑设计实验报告数字电路与逻辑设计实验报告摘要:本实验旨在通过设计和实现数字电路和逻辑门电路,加深对数字电路和逻辑设计的理解。

实验过程中,我们使用了逻辑门电路、多路选择器、触发器等基本数字电路元件,并通过实际搭建电路和仿真验证,验证了电路的正确性和可靠性。

引言:数字电路和逻辑设计是计算机科学与工程领域的重要基础知识。

在现代科技发展中,数字电路的应用范围非常广泛,涉及到计算机、通信、控制等各个领域。

因此,深入理解数字电路和逻辑设计原理,掌握其设计和实现方法,对于我们的专业学习和未来的工作都具有重要意义。

实验一:逻辑门电路的设计与实现逻辑门电路是数字电路中最基本的元件之一,通过逻辑门电路可以实现各种逻辑运算。

在本实验中,我们通过使用与门、或门、非门等逻辑门电路,设计并实现了一个简单的加法器电路。

通过搭建电路和进行仿真验证,我们验证了加法器电路的正确性。

实验二:多路选择器的设计与实现多路选择器是一种常用的数字电路元件,可以根据控制信号的不同,选择不同的输入信号输出。

在本实验中,我们通过使用多路选择器,设计并实现了一个简单的数据选择电路。

通过搭建电路和进行仿真验证,我们验证了数据选择电路的正确性。

实验三:触发器的设计与实现触发器是一种常用的数字电路元件,可以存储和传输信息。

在本实验中,我们通过使用触发器,设计并实现了一个简单的二进制计数器电路。

通过搭建电路和进行仿真验证,我们验证了二进制计数器电路的正确性。

实验四:时序逻辑电路的设计与实现时序逻辑电路是一种特殊的数字电路,其输出不仅与输入信号有关,还与电路的状态有关。

在本实验中,我们通过使用时序逻辑电路,设计并实现了一个简单的时钟电路。

通过搭建电路和进行仿真验证,我们验证了时钟电路的正确性。

实验五:数字电路的优化与综合数字电路的优化与综合是数字电路设计中非常重要的环节。

在本实验中,我们通过使用逻辑代数和Karnaugh图等方法,对已有的数字电路进行了优化和综合。

数字逻辑电路实验报告模板

数字逻辑电路实验报告模板

《数字逻辑电路》实验报告第次实验:姓名:学号:级系班邮箱:时间:正文(由下面八项内容评定每次实验报告成绩)一、实验目的本次实验预期要学习到的知识、方法等二、实验原理(背景知识)本次实验需要的理论知识背景、实验环境和工具等前期准备知识,预习时完成的引导性实验内容一般在此有所体现。

三、实验器材/环境本次实验中使用的硬件器材和软件环境四、实验设计思路(验收实验)验收实验的设计流程图/卡诺图/真值表/代码等或其他五、实验过程(验收实验的过程)充分截图,详细说明实验过程步骤等六、实验结果简单介绍本次实验完成的工作,学到的知识等。

七、实验中遇到的问题及解决方案请将已经解决的问题写在这里,没有解决的问题也可以保留在这里,但是可能不能立即得到回答,没有得到回答的问题请在下一次课时向老师和助教当面提问。

八、实验的启示/意见和建议1 对本课程或本次实验的意见建议等,如:实验内容难度,实验时间安排,如何提高实验效果等。

2 对本次实验内容你有没有让同学更有兴趣的建议,或者如何才能让你对本次实验更有兴趣?3 你有好的与本次实验有关的实验内容建议吗?比如在日常的学习和生活中遇到的,可以转换为实验的内容?我们将非常感谢你给我们提出意见和建议,这将使我们的课程更加生动有效。

附:本次实验你总共用了多长时间?包括预习时间、和课堂完成时间。

(请大家如实统计,时间长短不影响本次实验的成绩。

这个主要用于统计大家的工作时间,粗略确定实验的难度,为我们以后的实验设计提供参考。

)感谢大家的观看和支持!01 02正所谓“画眉麻雀不同嗓,金鸡鸟鸦不同窝。

”这也许就是潜移默化的力量和耳濡目染的作用。

03如果你想聪明,那你就要和聪明的人在一起,你才会更加睿智;如果你想优秀,那你就要和优秀的人在一起,你才会出类拔萃。

俗话说:物以类聚,人以群分。

之所以会出现一个宿舍都考上研究生,同一班级能考上多个名校生,大概就是这方面的原因吧。

人生就是这样。

想和聪明的人在一起,你就得聪明;想和优秀的人在一起,你就得优秀。

逻辑电路实验实验报告

逻辑电路实验实验报告

一、实验名称逻辑电路实验二、实验目的1. 掌握基本的数字逻辑电路设计方法。

2. 理解并掌握常用的逻辑门及其组合电路。

3. 提高实验操作技能和观察能力。

4. 培养团队协作精神。

三、实验原理数字逻辑电路是构成数字系统的基本单元,主要由逻辑门、触发器等基本元件组成。

逻辑门是数字电路的基本单元,它按照一定的逻辑规则实现基本的逻辑运算。

本实验主要涉及以下逻辑门及其组合电路:1. 与门(AND):当所有输入信号都为高电平时,输出信号才为高电平。

2. 或门(OR):当至少一个输入信号为高电平时,输出信号才为高电平。

3. 非门(NOT):将输入信号取反。

4. 异或门(XOR):当输入信号不同时,输出信号为高电平。

四、实验器材1. 逻辑门实验板2. 逻辑笔3. 万用表4. 逻辑分析仪5. 示波器6. 计时器五、实验内容1. 与门、或门、非门、异或门的逻辑功能测试2. 组合逻辑电路设计3. 电路仿真与验证六、实验步骤1. 与门、或门、非门、异或门的逻辑功能测试(1)按照实验指导书,连接与门、或门、非门、异或门实验板。

(2)使用逻辑笔和万用表,测试各个逻辑门的输入、输出信号。

(3)记录测试结果,与理论值进行对比,分析实验误差。

2. 组合逻辑电路设计(1)根据设计要求,选择合适的逻辑门,绘制电路图。

(2)使用实验板,搭建组合逻辑电路。

(3)测试电路功能,验证设计是否正确。

3. 电路仿真与验证(1)使用逻辑分析仪或示波器,观察电路的输入、输出信号波形。

(2)分析波形,验证电路功能是否符合预期。

七、实验结果与分析1. 与门、或门、非门、异或门的逻辑功能测试实验结果如下:与门:当所有输入信号都为高电平时,输出信号才为高电平。

或门:当至少一个输入信号为高电平时,输出信号才为高电平。

非门:将输入信号取反。

异或门:当输入信号不同时,输出信号为高电平。

2. 组合逻辑电路设计(1)设计一个4位二进制加法器,包括两个输入端(A、B)和两个输出端(S、C)。

数字逻辑电路实验报告

数字逻辑电路实验报告

数字逻辑电路实验报告指导老师:班级:学号:姓名:时间:第一次试验一、实验名称:组合逻辑电路设计1二、试验目的:掌握组合逻辑电路的功能测试。

1、验证半加器和全加器的逻辑功能。

2、、学会二进制数的运算规律。

3、试验所用的器件和组件:三、74LS00 3片,型号二输入四“与非”门组件74LS20 1片,型号四输入二“与非”门组件74LS86 1片,型号二输入四“异或”门组件实验设计方案及逻辑图:四、/全减法器,如图所示:1、设计一位全加时做减法运时做加法运算,当M=1M决定的,当M=0 电路做加法还是做减法是由SCin分别为加数、被加数和低位来的进位,、B和算。

当作为全加法器时输入信号A分别为被减数,减数Cin、B和为和数,Co为向上的进位;当作为全减法时输入信号A 为向上位的借位。

S为差,Co和低位来的借位,1)输入/(输出观察表如下:(2)求逻辑函数的最简表达式函数S的卡诺图如下:函数Co的卡诺如下:化简后函数S的最简表达式为:Co的最简表达式为:2(3)逻辑电路图如下所示:、舍入与检测电路的设计:2F1码,用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421为奇偶检测输出信号。

当电路检测到输入的代码大于或F2为“四舍五入”输出信号,的个数为奇数时,电路。

当输入代码中含1F1=1;等于5是,电路的输出其他情况F1=0 F2=0。

该电路的框图如图所示:的输出F2=1,其他情况输出观察表如下:(输入/0 1 0 0 1 01 0 1 0 0 11 1 1 0 0 01 0 1 1 1 11 0 0 1 0 11 0 1 0 0 11 0 0 1 1 01 1 1 0 1 11 0 1 1 0 011111求逻辑函数的最简表达式(2)的卡诺如下:函数F1 F2函数的卡诺图如下:的最简表达式为:化简后函数F2 的最简表达式为:F1)逻辑电路图如下所示;(3课后思考题五、化简包含无关条件的逻辑函数时应注意什么?1、答:当采用最小项之和表达式描述一个包含无关条件的逻辑问题时,函数表达式中,并不影响函数的实际逻辑功能。

数字逻辑电路实验报告

数字逻辑电路实验报告

数字逻辑电路实验报告实验二:16进制译码器原理图:GAL方程:PLD16V8 BASIC GATES2009.04.16LQY USTC V0.1W X Y Z NC NC NC NC NC GNDNC A B C D E F G NC VCC/A=/W*/X*/Y*Z+/W*X*/Y*/Z+W*/X*Y*Z+W*X*/Y*Z//B=/W*/X*/Y*Z+/W*X*/Y*Z+/W*X*Y*/Z+W*/X*Y*Z+W*X*/Y*/Z+W*X*Y*/Z/C=/W*/X*/Y*Z+/W*/X*Y*/Z+W*X*/Y*/Z+W*X*Y*/Z+W*X*Y*Z/D=/W*/X*/Y*Z+/W*X*/Y*/Z+/W*X*Y*Z+W*/X*Y*/Z+W*X*Y*Z/E=/W*/X*Y*Z+/W*X*/Y*/Z+/W*X*/Y*Z+/W*X*Y*Z+W*/X*/Y*Z/F=/W*/X*Y*/Z+/W*/X*Y*Z+/W*X*Y*Z+W*X*/Y*Z/G=/W*/X*/Y*Z+/W*X*Y*Z+W*X*/Y*/Z+/W*/X*/Y*/ZDESCRIPTION注释:实验中使用的是共阳极数码管,设计的时候还没有化简VHDL代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY code16 ISPORT(w,x,y,z: IN STD_LOGIC;A,b,c,d,e,f,g:OUT STD_LOGIC);END code16;ARCHITECTURE WORK OF code16 ISBEGINA<=(NOT W AND NOT X AND NOT Y AND Z) OR (NOT W AND X AND NOT Y AND NOT Z) OR (W AND NOT X AND Y AND Z) OR (W AND X AND NOT Y AND NOT Z);B<=(NOT W AND NOT X AND NOT Y AND Z) OR (NOT W AND X AND NOT Y AND Z) OR (NOT W AND X AND Y AND NOT Z) OR (W AND NOT X AND Y AND Z) OR (W AND X AND NOT Y AND NOT Z) OR (W AND X AND Y AND NOT Z);C<=(NOT W AND NOT X AND NOT Y AND Z) OR (NOT W AND NOT X AND Y AND NOT Z) OR (W AND X AND NOT Y AND NOT Z) OR (W AND X AND Y AND NOT Z) OR (W AND X AND Y AND Z);D<=(NOT W AND NOT X AND NOT Y AND Z) OR (NOT W AND X AND NOT Y AND NOT Z) OR (NOT W AND X AND Y AND Z) OR (W AND NOT X AND Y AND NOT Z) OR (W AND X AND Y AND Z);E<=(NOT W AND NOT X AND Y AND Z) OR (NOT W AND X AND NOT Y AND NOT Z) OR (NOT W AND X AND NOT Y AND Z) OR (NOT W AND X AND Y AND Z) OR (W AND NOT X AND NOT Y AND Z);F<=(NOT W AND NOT X AND Y AND NOT Z) OR (NOT W AND NOT X AND Y AND Z) OR (NOT W AND X AND Y AND Z) OR (W AND X AND NOT Y AND Z);NOT G<=(NOT W AND NOT X AND NOT Y AND Z) OR (NOT W AND X AND Y AND Z) OR (W AND X AND NOT Y AND NOT Z) OR (NOT W AND NOT X AND NOT Y AND NOT Z);END WORK;实验三:海明校验电路原理图:做实验时,造错在总线上造错,导致读和写没有很好体现出来。

《数字逻辑电路》实训报告

《数字逻辑电路》实训报告

《数字逻辑电路》实训报告《数字逻辑电路》实训报告专业:电子信息工程学生姓名:学号: 1152100405指导教师:2013年6月24日电动车尾灯控制电路的设计与制作1整机设计1.1设计要求①用中规模集成芯片实现电动车尾灯控制电路的设计,假设电动车尾部左右两侧各有3个指示灯(用发光二极管模拟)。

②当电动车正常运行时,两侧指示灯全灭。

③当电动车刹车时,两侧指示灯同时闪烁(闪烁时间间隔为1s)。

④当电动车右转弯时,右侧的3只指示灯按“100→010→001→100”状态循环顺序点亮(每只指示灯闪亮时间为1s),左侧的指示灯全灭。

⑤当电动车左转弯时,左侧的3只指示灯按“001→010→100→001”状态循环顺序点亮(每只指示灯闪亮时间为1s),右侧的指示灯全灭。

⑥其他。

1.1.1设计任务(楷体小四号)设计并制作一个电动车尾灯控制电路。

1.1.2性能指标要求(楷体小四号)①两个开关同时拨到“11”状态,尾灯全亮且亮与灭的时间间隔为1秒;②只把右边的开关拨到“1”状态时表示车向右转,右侧车尾灯按“100→010→001→100”状态循环顺序点亮,且闪亮的时间间隔为1秒,左侧尾灯全灭;③只把左边的开关拨到“1”状态时表示车向左转,左侧尾灯按“001→010→100→001”状态循环顺序点亮,且闪亮的时间间隔为1秒,右侧尾灯全灭;④当同时拨上两个开关时,两个开关的状态都为“0”车尾灯停止工作,全部熄灭。

1.2 整机实现的基本原理及框图1.2.1基本原理电动车尾灯控制电路的基本原理是由555时钟芯片输出秒脉冲到74LS192芯片进行清零法模3计数,然后将74LS192的模3值与拨码开关的值作为74LS138的地址选择端的输入,从而进行138芯片输出端输出的选择,由此实现尾灯的顺序闪动;同时也通过拨码开关与74LS86组成的使能控制电路来控制138芯片的工作,从而实现138芯片不工作时尾灯的全部闪亮和全部灭的功能。

数字逻辑电路设计课程设计实验报告

数字逻辑电路设计课程设计实验报告

数字逻辑电路设计课程设计——多功能数字钟学校专业班级姓名学号数字系统综合设计——多功能数字钟实验目的1.学会将VHDL程序生成为自己的逻辑器件;2.学会应用数字系统方法进行电路设计;3.能够更加熟练得运用VHDL语言来编写、开发自己的数字电路;4.进一步掌握Quartus Ⅱ软件的用法;5.理解和实践编写较大型逻辑电路的步骤和方法,深入理解层次化设计方法;6.培养综合实验能力。

设计目的1.拥有正常的时、分、秒及时功能。

2.能利用实验板上的按键实现校时、校分及秒清零。

3.能利用实验板上的扬声器做整点报时。

4.闹钟功能。

5.在MAXPLUS Ⅱ中采用层次化设计方法进行设计。

6.完成全部电路设计后在实验板上下载,验证设计课题的正确性。

设计方案根据图1-1的总体设计框图,可以将整个系统分为6个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块及闹钟模块。

图1-1 多功能数字钟总体设计框图11.计时模块该模块的设计相对简单,使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。

二十四进制计数器用于计时,六十进制计数器用于计分和计秒。

只要给秒计数器一个1Hz的时钟脉冲,则可以进行正常计时。

分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。

2.校时模块校时模块设计要求实现校时、校分以及秒清零功能。

✧按下校时键,小时计数器迅速递增以调至所需要的小时位。

✧按下校分键,分计数器迅速递增以调至所需要的分位。

✧按下清零键,将秒计数器清零。

在设计此模块时要注意屏蔽校分时分计数器的进位信号,以防止小时计数器计数;利用D触发器消除校时校分是的按键抖动;计时采用1Hz的脉冲驱动计数器计数,而校对时间时应选用相对高频率的信号驱动计数器以达到快速校对时间的目的。

3.整点报时模块该模块的功能要求是:计时到59分50秒时,每两秒一次低音报时,整点进行高音报时,可以将报时信号接到试验板上的扬声器输出。

数字逻辑实验报告-5页精选文档

数字逻辑实验报告-5页精选文档

实验报告实验一基本门电路功能验证实验实验目的:验证与非门74LS00(或74HC00)、或非门74LS02)以及非门74LS04(或74HC04)逻辑功能1.验证与非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS00(或74HC00)为四个二输入端的与非门,74LS04(或74HC04)是六反相器。

其引脚分别如图1、2所示。

实验过程:参照引脚分布图,连接电路图,在电路图连接完成之前要断开电源。

1,2两个端口为输入端,1,2两个输入端接在控制端,通过波动上下开关来改变输入电阻的大小,通过控制2个输入端电平的高低。

3为输出端,接在信号显示管上,通过显示管来确定输出信号是否有效。

,用万能表测量出输出端的电平大小,并及时记录下实验结果。

实验结果:得到如下四组数据,根据数据得出真值表实验结论:实验结果验证了与非门逻辑电路的功能,可以用一个图和真值表表示:2.验证或非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS02为四个二输入端的与非门,74LS04(或74HC04)是六反相器。

实验过程:参照引脚分布图,连接电路图,在电路图连接完成之前要断开电源。

1,2两个端口为输入端,1,2两个输入端接在控制端,通过波动上下开关来改变输入电阻的大小,通过控制2个输入端电平的高低。

3为输出端,接在信号显示管上,通过显示管来确定输出信号是否有效。

,用万能表测量出输出端的电平大小,并及时记录下实验结果。

实验结果:实验结论:实验结果验证了或非门逻辑电路的功能,可以用一个图和真值表表示:3.验证非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS04(或74HC04)为四个二输入端的与非门,74LS04(或74HC04)是六反相器。

实验过程:参照引脚分布图,连接电路图,在电路图连接完成之前要断开电源。

数字逻辑实验报告

数字逻辑实验报告

一、实验目的1. 理解数字逻辑的基本概念和原理。

2. 掌握逻辑门电路的基本功能和应用。

3. 学会使用逻辑门电路设计简单的组合逻辑电路。

4. 培养实际动手能力和分析问题、解决问题的能力。

二、实验原理数字逻辑是研究数字电路的基本原理和设计方法的一门学科。

数字电路是由逻辑门电路组成的,逻辑门电路是实现逻辑运算的基本单元。

常见的逻辑门电路有与门、或门、非门、异或门等。

组合逻辑电路是由逻辑门电路组成的,其输出仅与当前的输入有关,而与电路的历史状态无关。

组合逻辑电路的设计方法主要有真值表法、逻辑函数法、卡诺图法等。

三、实验仪器与设备1. 数字逻辑实验箱2. 移动电源3. 连接线4. 逻辑门电路模块5. 计算器四、实验内容1. 逻辑门电路测试(1)测试与门、或门、非门、异或门的功能。

(2)测试逻辑门电路的输出波形。

2. 组合逻辑电路设计(1)设计一个4位二进制加法器。

(2)设计一个4位二进制减法器。

(3)设计一个4位二进制乘法器。

(4)设计一个4位二进制除法器。

五、实验步骤1. 逻辑门电路测试(1)将实验箱上相应的逻辑门电路模块插入实验板。

(2)根据实验要求,连接输入端和输出端。

(3)打开移动电源,将输入端接入逻辑信号发生器。

(4)观察输出波形,记录实验结果。

2. 组合逻辑电路设计(1)根据实验要求,设计组合逻辑电路的原理图。

(2)根据原理图,将逻辑门电路模块插入实验板。

(3)连接输入端和输出端。

(4)打开移动电源,将输入端接入逻辑信号发生器。

(5)观察输出波形,记录实验结果。

六、实验结果与分析1. 逻辑门电路测试实验结果如下:(1)与门:当两个输入端都为高电平时,输出为高电平。

(2)或门:当两个输入端至少有一个为高电平时,输出为高电平。

(3)非门:输入端为高电平时,输出为低电平;输入端为低电平时,输出为高电平。

(4)异或门:当两个输入端不同时,输出为高电平。

2. 组合逻辑电路设计实验结果如下:(1)4位二进制加法器:能够实现两个4位二进制数的加法运算。

数字逻辑电路实验报告

数字逻辑电路实验报告

一、实验目的1. 熟悉数字逻辑电路的基本原理和基本分析方法。

2. 掌握常用逻辑门电路的原理、功能及实现方法。

3. 学会使用数字逻辑电路实验箱进行实验操作,提高动手能力。

二、实验原理数字逻辑电路是现代电子技术的基础,它由逻辑门电路、触发器、计数器等基本单元组成。

本实验主要涉及以下内容:1. 逻辑门电路:与门、或门、非门、异或门等。

2. 组合逻辑电路:半加器、全加器、译码器、编码器等。

3. 时序逻辑电路:触发器、计数器、寄存器等。

三、实验仪器与设备1. 数字逻辑电路实验箱2. 示波器3. 信号发生器4. 万用表5. 逻辑笔四、实验内容及步骤1. 逻辑门电路实验(1)与门、或门、非门、异或门原理实验步骤:1)按实验箱上的逻辑门电路原理图连接电路;2)使用信号发生器产生输入信号,用逻辑笔观察输出信号;3)分析实验结果,验证逻辑门电路的原理。

(2)组合逻辑电路实验步骤:1)按实验箱上的组合逻辑电路原理图连接电路;2)使用信号发生器产生输入信号,用逻辑笔观察输出信号;3)分析实验结果,验证组合逻辑电路的原理。

2. 时序逻辑电路实验(1)触发器实验步骤:1)按实验箱上的触发器原理图连接电路;2)使用信号发生器产生输入信号,用示波器观察输出信号;3)分析实验结果,验证触发器的原理。

(2)计数器实验步骤:1)按实验箱上的计数器原理图连接电路;2)使用信号发生器产生输入信号,用示波器观察输出信号;3)分析实验结果,验证计数器的原理。

五、实验结果与分析1. 逻辑门电路实验实验结果:通过实验,我们验证了与门、或门、非门、异或门的原理,观察到了输入信号与输出信号之间的逻辑关系。

2. 组合逻辑电路实验实验结果:通过实验,我们验证了半加器、全加器、译码器、编码器的原理,观察到了输入信号与输出信号之间的逻辑关系。

3. 时序逻辑电路实验实验结果:通过实验,我们验证了触发器、计数器的原理,观察到了输入信号与输出信号之间的时序关系。

数字逻辑实验报告

数字逻辑实验报告

数字逻辑实验报告本次实验旨在通过数字逻辑实验的设计和实现,加深对数字逻辑电路原理的理解,并通过实际操作提高动手能力和解决问题的能力。

在本次实验中,我们将学习数字逻辑实验的基本原理和方法,掌握数字逻辑实验的设计与调试技巧,提高实验操作的熟练程度。

首先,我们进行了数字逻辑实验的准备工作,包括熟悉实验设备和器材的使用方法,了解实验电路的基本原理和设计要求。

在实验过程中,我们按照实验指导书上的要求,逐步完成了数字逻辑实验电路的设计、搭建和调试。

在实验过程中,我们遇到了一些问题,但通过分析问题的原因并进行逐步排除,最终成功完成了实验。

其次,我们进行了数字逻辑实验电路的测试和验证。

通过使用示波器、逻辑分析仪等测试设备,我们对搭建好的数字逻辑电路进行了测试,验证了实验电路的正确性和稳定性。

在测试过程中,我们发现了一些问题,但通过仔细观察和分析,最终找到了解决问题的方法,并取得了满意的测试结果。

最后,我们总结了本次实验的经验和教训。

通过本次实验,我们深刻理解了数字逻辑电路的原理和实现方法,提高了实验操作的技能和水平,增强了动手能力和解决问题的能力。

在今后的学习和工作中,我们将继续努力,不断提高自己的专业能力和实践能力,为将来的发展打下坚实的基础。

通过本次实验,我们对数字逻辑实验有了更深入的了解,对数字逻辑电路的设计和实现有了更加丰富的经验,相信在今后的学习和工作中,我们能够更加熟练地运用数字逻辑知识,为实际工程问题的解决提供有力的支持。

总之,本次实验不仅增强了我们对数字逻辑实验的理解和掌握,也提高了我们的实验操作能力和解决问题的能力。

希望通过今后的学习和实践,我们能够不断提高自己的专业水平,为将来的发展打下坚实的基础。

逻辑数字电路实验报告

逻辑数字电路实验报告

一、实验目的1. 理解并掌握基本逻辑门电路(与门、或门、非门、异或门)的功能和特性。

2. 学会使用基本逻辑门电路搭建组合逻辑电路。

3. 熟悉逻辑分析仪的使用方法,观察和分析逻辑电路的输出波形。

4. 培养动手实践能力和逻辑思维能力。

二、实验原理逻辑数字电路是数字电路的基础,它由基本逻辑门电路组成,可以完成各种逻辑运算。

本实验主要涉及以下基本逻辑门电路:1. 与门(AND gate):当所有输入端都为高电平时,输出才为高电平,否则输出为低电平。

2. 或门(OR gate):当至少一个输入端为高电平时,输出就为高电平,否则输出为低电平。

3. 非门(NOT gate):将输入信号取反,即输入高电平时输出低电平,输入低电平时输出高电平。

4. 异或门(XOR gate):当输入信号不同时,输出为高电平,否则输出为低电平。

三、实验器材1. 逻辑分析仪2. 74LS00(四路2-3-3-2输入与或非门)3. 74LS20(四路2-输入与非门)4. 74LS86(四路2-输入异或门)5. 连接线6. 电源四、实验步骤1. 搭建与门电路:- 使用74LS00搭建一个2输入与门电路。

- 通过逻辑分析仪观察输入和输出波形,验证与门电路的功能。

2. 搭建或门电路:- 使用74LS00搭建一个2输入或门电路。

- 通过逻辑分析仪观察输入和输出波形,验证或门电路的功能。

3. 搭建非门电路:- 使用74LS20搭建一个非门电路。

- 通过逻辑分析仪观察输入和输出波形,验证非门电路的功能。

4. 搭建异或门电路:- 使用74LS86搭建一个2输入异或门电路。

- 通过逻辑分析仪观察输入和输出波形,验证异或门电路的功能。

5. 搭建组合逻辑电路:- 使用上述基本逻辑门电路搭建一个组合逻辑电路,例如二进制加法器。

- 通过逻辑分析仪观察输入和输出波形,验证组合逻辑电路的功能。

五、实验结果与分析1. 与门电路:- 输入端都为高电平时,输出为高电平;输入端有一个或多个为低电平时,输出为低电平。

数字逻辑种实验报告(3篇)

数字逻辑种实验报告(3篇)

第1篇一、实验目的1. 理解数字逻辑的基本概念和基本电路;2. 掌握逻辑门电路的设计和实现方法;3. 熟悉组合逻辑电路和时序逻辑电路的设计和仿真;4. 提高动手实践能力和问题解决能力。

二、实验环境1. 实验仪器:数字逻辑实验箱、示波器、逻辑分析仪等;2. 实验软件:Logisim、Proteus等。

三、实验内容1. 逻辑门电路设计(1)实验目的:学习逻辑门电路的基本原理,掌握逻辑门电路的设计方法。

(2)实验内容:1)设计一个与门电路,实现两个输入信号A和B的与运算;2)设计一个或门电路,实现两个输入信号A和B的或运算;3)设计一个非门电路,实现输入信号A的反运算。

(3)实验步骤:1)根据实验要求,利用实验箱上的逻辑门模块搭建相应的逻辑门电路;2)通过示波器观察输入信号和输出信号的变化,验证电路功能;3)利用Logisim软件对电路进行仿真,分析电路的输出波形。

2. 组合逻辑电路设计(1)实验目的:学习组合逻辑电路的设计方法,掌握组合逻辑电路的仿真和测试。

(2)实验内容:1)设计一个2-4线译码器,实现输入信号A、B、C、D到输出信号Y0、Y1、Y2、Y3的译码功能;2)设计一个奇偶校验电路,实现输入信号A、B、C、D的奇偶校验功能。

(3)实验步骤:1)根据实验要求,利用实验箱上的逻辑门模块搭建相应的组合逻辑电路;2)通过示波器观察输入信号和输出信号的变化,验证电路功能;3)利用Logisim软件对电路进行仿真,分析电路的输出波形。

3. 时序逻辑电路设计(1)实验目的:学习时序逻辑电路的设计方法,掌握时序逻辑电路的仿真和测试。

(2)实验内容:1)设计一个异步计数器,实现输入信号CLK的计数功能;2)设计一个同步计数器,实现输入信号CLK的计数功能。

(3)实验步骤:1)根据实验要求,利用实验箱上的触发器模块搭建相应的时序逻辑电路;2)通过示波器观察输入信号和输出信号的变化,验证电路功能;3)利用Logisim软件对电路进行仿真,分析电路的输出波形。

数字逻辑电路实验报告

数字逻辑电路实验报告

数字逻辑电路实验报告一、实验目的:1、理解数字逻辑电路的基本原理以及电路特性。

2、掌握典型数字逻辑电路的设计、仿真和实验方法。

3、学会使用数字集成电路芯片进行数字逻辑电路的设计。

二、实验器材:1、数字分析仪。

2、数字万用表。

3、示波器。

三、实验原理:本次实验中采用的逻辑芯片为AND、OR、NOT和NAND四种基本逻辑电路。

这四种逻辑电路都是非反相型(即输出高电平被认为是逻辑 1),并具有以下逻辑公式:AND:Q=A·BOR:Q=A+BNOT:Q=~A,或Q=barA其中, A,B是输入端口的输入信号;Q是输出端口的输出信号。

四、实验内容:使用AND逻辑电路芯片设计两位二进制加法电路。

五、实验结果:按照逻辑公式,将两位二进制加法器的逻辑设计图画出如下所示。

然后,在电路实验平台上将电路连接好。

然后,我们检查了电路接线的正确性,并使用数字分析仪和数字万用表来测试电路的正确性和响应时间。

结果显示:当两个输入信号分别为 1、1 时,输出端口的信号为 10,符合二进制的加法规则。

当其中一个输入信号为 1,另一个输入信号为0时,输出端口的信号为 1,仍符合二进制的加法规则。

结果显示:计数器电路可以正常工作,它可以将输入的连续的脉冲信号转换为二进制计数器输出的信号。

六、实验分析:通过实验,我们进一步深入了解了数字逻辑电路的基本原理和工作特性,以及数字逻辑电路设计、仿真和实验的方法。

在实验中,我们学会了使用基本的数字逻辑电路芯片,如AND、OR、NOT和NAND等,设计了包括二进制加法器、计数器电路、反相器和取反器等四种典型的数字逻辑电路。

在实验中,我们通过使用数字分析仪、数字万用表以及示波器等工具对电路进行了测试和验证,得出了正确的结果。

同时,我们也进一步增强了对数字逻辑电路设计和测试方面的技能和知识。

数字电路实验报告 2023年数字电路实训报告(精彩7篇)

数字电路实验报告 2023年数字电路实训报告(精彩7篇)

数字电路实验报告2023年数字电路实训报告(精彩7篇)用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统。

由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路。

下面是作者给大家整理的7篇2023年数字电路实训报告,希望可以启发您对于数字电路实验报告的写作思路。

数字电路实训报告篇一一、实训时间__二、实训地点__电工电子实习基地三、指导老师__四、实训目的1、熟悉电工工具的使用方法。

2、了解安全用电的有关知识及触电的急救方法。

3、掌握电工基本操作技能。

4、熟悉电动机控制电路的调试及故障排除方法。

5、熟悉电动机板前配线的工艺流程及安装方法。

6、了解电动机正转反转电路设计的一般步骤,并掌握电路图的绘制方法。

7、熟悉常用电器元件的性能、结构、型号、规格及使用范围。

五、实训资料(一)常用低压电器介绍1、螺旋式熔断器螺旋式熔断器电路中较简单的短路保护装置,使用中,由于电流超过容许值产生的热量使串联于主电路中的熔体熔化而切断电路,防止电器设备短路或严重过载。

它由熔体、熔管、盖板、指示灯和触刀组成。

选取熔断器时不仅仅要满足熔断器的形式贴合线路和安装要求,且务必满足熔断器额定电压小于线路工作电压,熔断器额定电流小于线路工作电流。

2、热继电器热继电器是用来保护电动机使之免受长期过载的危害。

但是由于热继电器的热惯性,它只能做过载保护。

它由热元件、触头系统、动作机构、复位按钮、整定电流装置、升温补偿元件组成。

其工作原理为:热元件串接在电动机定子绕组仲,电动机绕组电流即为流动热元件的电流。

电动机正常运行时热元件产生热量虽能使双金属片弯曲还不足以使继电器动作。

电动机过载时,经过热元件电流增大,热元件热量增加,使双金属片弯曲增大,经过一段时光后,双金属片推动导板使继电器出头动作,从而切断电动机控制电路。

3、按钮开关按钮开关是用来接通或断开控制电路的,电流比较小。

按钮由动触点和静触点组成。

其工作原理为:按下按钮时,动触点就把下边的静触点接通而断开上边的静触点。

数字逻辑实践实验报告(3篇)

数字逻辑实践实验报告(3篇)

第1篇一、实验目的1. 掌握数字逻辑电路的基本原理和设计方法。

2. 熟悉数字电路实验设备的使用。

3. 提高数字电路的仿真和调试能力。

4. 培养学生分析问题和解决问题的能力。

二、实验内容1. 组合逻辑电路设计(1)2选1多路选择器设计:根据教材5.1节的流程,利用Quartus II完成2选1多路选择器的文本编辑输入(MUX21.v)和仿真测试等步骤,给出仿真波形。

在实验系统上硬件测试,验证此设计的功能。

(2)三人表决电路设计:根据教材5.1节的流程,利用Quartus II完成三人表决电路的文本编辑输入(图5-36)和仿真测试等步骤,给出仿真波形。

在实验系统上硬件测试,验证此设计的功能。

2. 时序逻辑电路设计(1)数字显示电子钟设计:根据任务要求,设计一个数字显示电子钟,时钟的时、分、秒要求各用两位显示,上、下午用发光管作为标志。

整个系统要有校时部分和闹钟部分,声音要响5秒。

(2)脉冲波形的变换与产生:设计单稳态触发器,555定时器及其应用电路,实现脉冲波形的变换与产生。

3. 数字逻辑电路仿真与调试(1)使用Logisim软件进行无符号数的乘法器设计,实现两个无符号的4位二进制数的乘法运算。

(2)使用Logisim软件进行无符号数的除法器设计,实现两个无符号的4位二进制数的除法运算。

三、实验过程1. 组合逻辑电路设计(1)2选1多路选择器设计:首先,分析2选1多路选择器的逻辑功能,确定输入输出关系。

然后,利用Quartus II软件编写Verilog HDL代码,完成2选1多路选择器的文本编辑输入。

接着,进行仿真测试,观察仿真波形,验证设计功能。

最后,在实验系统上硬件测试,验证设计功能。

(2)三人表决电路设计:首先,分析三人表决电路的逻辑功能,确定输入输出关系。

然后,利用Quartus II软件编写Verilog HDL代码,完成三人表决电路的文本编辑输入。

接着,进行仿真测试,观察仿真波形,验证设计功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数字逻辑电路》实验报告第十四次实验:七巧板的基本设计姓名:***学号:*********2010级计算机系一班邮箱:****************时间:12月22日一、实验目的这个实验是自己的个人的设计,是从一本关于iphone的游戏设计中得到的灵感,自己感觉这个实验能够将键盘和显示器联系起来并且实现不算太难,主要是联系获得键盘的数据,处理数据并能够在显示器上显示相应的图案,是个个人感觉比较新颖的想法,所以没有太用心实现简易处理器,大部分时间都用来实现这个设计了。

二、实验原理(背景知识)从第九次实验中的键盘实验可以学到如何接受外界键盘的输入,在后面的VGA实验中可以基本了解如何显示基本图案,但是如何实现移动和旋转,所以为了方便实现以及统一管理,自己使用了有一个点来形成一个图案,并且对移动和旋转都是以这个点为基准的。

然后主要是对每个图案的图形计算,其中对图像的旋转是要新的计算,不可能使用固定计算函数可以得到,所以不同的旋转是不同的状态,这样就能实现基本的移动和旋转,另外可以实现相应的游戏功能,即每一个图案的坐标相对位置是不变的,所以实现对应的游戏功能就是计算每个坐标的相对位置是否相同。

至于详细想法在下面进行细述。

三、实验器材/环境硬件:个人电脑,Altera公司的DE2-70开发板等;软件:Quartus II等。

四、实验设计思路(验收实验)1、分析所需要的七巧板形状,每个形状的支撑点,对每个形状进行编号以及每种形状可以出现的状态:(1)5个三角形,我们选取直角顶点为支撑点,共存在8个状态,即每次旋转45度;(2)1个正方形,我们任意选取一个顶点为支撑点,共存在2个状态,即旋转45度产生的两种状态;(3)1个平行四边形,我们选取角度小的那个顶点为支撑点,共存在4个状态,每个状态有一对平行边或者平行水平或者平行数值。

2、确定键盘上的功能键,并对其功能进行编号,主要有移动方向键(后来共用了2组方向键,以便操控),控制旋转键,选择不同图形键,后来添加了初始键、两个预置图案的键、一个判断图形是否符合要求的键,并对他们进行了相应的编码(4位,最后证明4位有点少)。

3、确定功能模块:(1)从键盘接受数据并对其进行基本出来的模块,代码如下:module io_ps2(clk,clrn,ps2_clk,ps2_data,data,change);input clk,clrn,ps2_clk,ps2_data;output reg [3:0]data;output change;wire change;reg ready;reg overflow;reg [3:0]count;reg [7:0]temp_data,temp;reg key_f0;reg [9:0] buffer;reg [7:0]fifo[7:0];reg [2:0] w_ptr,r_ptr;reg [2:0] ps2_clk_sync;always @(posedge clk)beginps2_clk_sync<={ps2_clk_sync[1:0],ps2_clk};endwire sampling = ps2_clk_sync[2]&~ps2_clk_sync[1];always @(posedge clk)beginif(clrn==0)begincount<=0;w_ptr<=0;r_ptr<=0;overflow<=0;endelseif(sampling)beginif(count==4'd10)beginif((buffer[0]==0)&&(ps2_data)&&(^buffer[9:1]))beginfifo[w_ptr]<=buffer[8:1];w_ptr<=w_ptr+3'b1;ready<=1'b1;overflow<=overflow|(r_ptr==(w_ptr+3'b1));endcount<=0;endelse beginbuffer[count]<=ps2_data;count<=count+3'b1;endendif(ready)begintemp=fifo[r_ptr-3'd1];temp_data=fifo[r_ptr];r_ptr<=r_ptr+3'd1;ready<=1'b0;if(temp_data==8'hf0)begin//temp=fifo[r_ptr-3'd2];key_f0<=1'b1;endelse beginkey_f0<=1'b0;endendendalways @(posedge key_f0 or negedge clrn)beginif(!clrn)data <= 4'd0;else begincase(temp)8'h0D: data <= 4'd1;8'h29: data <= 4'd2;8'h1D: data <= 4'd3;8'h1C: data <= 4'd4;8'h1B: data <= 4'd5;8'h23: data <= 4'd6;8'h43: data <= 4'd7;8'h3B: data <= 4'd8;8'h42: data <= 4'd9;8'h4B: data <= 4'd10;8'h16: data <= 4'd11;8'h1E: data <= 4'd12;8'h45: data <= 4'd13;8'h5A: data <= 4'd14;default:data <= 4'd15;endcaseendendassign change=~key_f0;endmodule(2)接受键盘模块送来的数据,并由此选择对应图形的状态,并在开始时对所有图形位置状态进行初始化,将每个图形坐标、状态送入VGA显示模块,代码如下:moduleps2_vga(din,clk,x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6,state0,state1,state2,state3,state4,state5 ,state6,choose);input [3:0]din;input clk;output reg [2:0]choose;output reg [9:0]x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;output reg [2:0]state0,state1,state2,state5,state6;output reg [1:0]state4;output reg state3;initial beginx0 = 10'd320;y0 = 10'd240;x1 = 10'd320;y1 = 10'd240;x2 = 10'd384;y2 = 10'd176;x3 = 10'd320;y3 = 10'd176;x4 = 10'd352;y4 = 10'd208;x5 = 10'd288;y5 = 10'd208;x6 = 10'd320;y6 = 10'd240;state3 = 1'b1;state4 = 2'd1;endalways @ (posedge clk) begincase(din)4'd1:choose <= choose + 1'b1;4'd2: begincase(choose)3'd0:state0 <= state0 + 1'b1;3'd1:state1 <= state1 + 1'b1;3'd2:state2 <= state2 + 1'b1;3'd3:state3 <= state3 + 1'b1;3'd4:state4 <= state4 + 1'b1;3'd5:state5 <= state5 + 1'b1;3'd6:state6 <= state6 + 1'b1;default:;endcaseend4'd3: begincase(choose)3'd0:y0 <= y0 - 10'd5;y1 <= y1 - 10'd5;3'd2:y2 <= y2 - 10'd5;3'd3:y3 <= y3 - 10'd5;3'd4:y4 <= y4 - 10'd5;3'd5:y5 <= y5 - 10'd5;3'd6:y6 <= y6 - 10'd5;default:;endcaseend4'd4: begincase(choose)3'd0:x0 <= x0 - 10'd5;3'd1:x1 <= x1 - 10'd5;3'd2:x2 <= x2 - 10'd5;3'd3:x3 <= x3 - 10'd5;3'd4:x4 <= x4 - 10'd5;3'd5:x5 <= x5 - 10'd5;3'd6:x6 <= x6 - 10'd5;default:;endcaseend4'd5: begincase(choose)3'd0:y0 <= y0 + 10'd5;3'd1:y1 <= y1 + 10'd5;3'd2:y2 <= y2 + 10'd5;3'd3:y3 <= y3 + 10'd5;y4 <= y4 + 10'd5;3'd5:y5 <= y5 + 10'd5;3'd6:y6 <= y6 + 10'd5;default:;endcaseend4'd6: begincase(choose)3'd0:x0 <= x0 + 10'd5;3'd1:x1 <= x1 + 10'd5;3'd2:x2 <= x2 + 10'd5;3'd3:x3 <= x3 + 10'd5;3'd4:x4 <= x4 + 10'd5;3'd5:x5 <= x5 + 10'd5;3'd6:x6 <= x6 + 10'd5;default:;endcaseend4'd7: begincase(choose)3'd0:y0 <= y0 - 10'd1;3'd1:y1 <= y1 - 10'd1;3'd2:y2 <= y2 - 10'd1;3'd3:y3 <= y3 - 10'd1;3'd4:y4 <= y4 - 10'd1;3'd5:y5 <= y5 - 10'd1;3'd6:y6 <= y6 - 10'd1;endcaseend4'd8: begincase(choose)3'd0:x0 <= x0 - 10'd1;3'd1:x1 <= x1 - 10'd1;3'd2:x2 <= x2 - 10'd1;3'd3:x3 <= x3 - 10'd1;3'd4:x4 <= x4 - 10'd1;3'd5:x5 <= x5 - 10'd1;3'd6:x6 <= x6 - 10'd1;default:;endcaseend4'd9: begincase(choose)3'd0:y0 <= y0 + 10'd1;3'd1:y1 <= y1 + 10'd1;3'd2:y2 <= y2 + 10'd1;3'd3:y3 <= y3 + 10'd1;3'd4:y4 <= y4 + 10'd1;3'd5:y5 <= y5 + 10'd1;3'd6:y6 <= y6 + 10'd1;default:;endcaseend4'd10: begincase(choose)3'd0:x0 <= x0 + 10'd1;3'd1:x1 <= x1 + 10'd1;3'd2:x2 <= x2 + 10'd1;3'd3:x3 <= x3 + 10'd1;3'd4:x4 <= x4 + 10'd1;3'd5:x5 <= x5 + 10'd1;3'd6:x6 <= x6 + 10'd1;default:;endcaseend4'd11: beginx0 <= 10'd390;x1 <= 10'd390;x2 <= 10'd435;x3 <= 10'd390;x4 <= 10'd480;x5 <= 10'd390;x6 <= 10'd390;y0 <= 10'd290;y1 <= 10'd290;y2 <= 10'd313;y3 <= 10'd268;y4 <= 10'd223;y5 <= 10'd268;y6 <= 10'd313;state0 <= 3'd1;state1 <= 3'd1;state2 <= 3'd5;state3 <= 1'd0;state4 <= 2'd2;state5 <= 3'd1;state6 <= 3'd1;end4'd12: beginx0 <= 10'd252;x1 <= 10'd342;x2 <= 10'd297;x3 <= 10'd252;x4 <= 10'd432;x5 <= 10'd252;x6 <= 10'd252;y0 <= 10'd276;y1 <= 10'd276;y2 <= 10'd321;y3 <= 10'd122;y4 <= 10'd321;y5 <= 10'd122;y6 <= 10'd122;state0 <= 3'd3;state1 <= 3'd1;state2 <= 3'd7;state3 <= 1'd1;state4 <= 2'd3;state5 <= 3'd6;state6 <= 3'd0;end4'd13: beginx0 = 10'd320;y0 = 10'd240;x1 = 10'd320;y1 = 10'd240;x2 = 10'd384;y2 = 10'd176;x3 = 10'd320;y3 = 10'd176;x4 = 10'd352;y4 = 10'd208;x5 = 10'd288;y5 = 10'd208;x6 = 10'd320;y6 = 10'd240;state3 = 1'b1;state4 = 2'd1;state0 = 3'd0;state1 = 3'd0;state2 = 3'd0;state5 = 3'd0;state6 = 3'd0;end4'd14: beginif((x3-1<=x5 && x5<=x3+1) && (x3-1<=x6 && x6<=x3+1) && ((x3-1<=x0 && x0<=x3+1 && x3+89<=x1 && x1<=x3+91 && state0==3 && state1==1)||(x3-1<=x1 &&x1<=x3+1 && x3+89<=x0 && x0<=x3+91 && state0==7 && state1==5)) && ((x3+44)<=x2 && x2<=x3+46) && (x3+179<=x4 && x4<=x3+181))if((y3-1<=y5 && y5<=y3+1) && (y3-1<=y6 && y6<=y3+1) && (y3+153<=y0 && y3+155>=y0) && (y1-1<=y0 && y0<=y1+1) && (y0+44<=y4 && y0+46<=y4) && (y4-1<=y2 && y4+1<=y2) && ((state5==6 && state6==0)||(state6==4 && state5==2)) && (state3==1) && (state4==3) && (state2==7))beginx0 = 10'd320;y0 = 10'd240;x1 = 10'd320;y1 = 10'd240;x2 = 10'd384;y2 = 10'd176;x3 = 10'd320;y3 = 10'd176;x4 = 10'd352;y4 = 10'd208;x5 = 10'd288;y5 = 10'd208;x6 = 10'd320;y6 = 10'd240;state3 = 1'b1;state4 = 2'd1;state0 = 3'd0;state1 = 3'd0;state2 = 3'd0;state5 = 3'd0;state6 = 3'd0;endenddefault: beginchoose <= 3'd7;endendcaseendendmodule(3)接受中间模块送来的数据,并对其进行坐标范围和状态的识别、计算,最后在显示器中显示,代码如下:module io_vga(iCLK_50, // DE2_70 clock 50MHZiCLRN, // clear_N connect to iSW[0]// to ADV7123choose,x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6,state0,state1,state2,state3,state4,state5,state6,oVGA_R,oVGA_G,oVGA_B,oVGA_SYNC_N,oVGA_BLANK_N,oVGA_CLOCK,// to VGAoVGA_HS,oVGA_VS);input iCLK_50;input iCLRN;input [2:0]choose;input [9:0]x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6;input [2:0]state0,state1,state2,state5,state6;input state3;input [1:0]state4;output reg [9:0] oVGA_R , oVGA_G , oVGA_B;output oVGA_SYNC_N , oVGA_BLANK_N , oVGA_CLOCK;output oVGA_HS , oVGA_VS;reg vga_clk;reg [9:0] h_count , v_count;reg out0,out1,out2,out3,out4,out5,out6;/*-----------------------------------------------------------------常量定义------------------------------------------------------------------*/// Horizontal Parameter ( Pixel )parameter H_SYNC_CYC = 96;parameter H_SYNC_BACK = 48;parameter H_SYNC_ACT = 640;parameter H_SYNC_FRONT= 16;parameter H_SYNC_TOTAL= 800; // 96+48+640+16=800 // Virtical Parameter ( Line )parameter V_SYNC_CYC = 2;parameter V_SYNC_BACK = 32;parameter V_SYNC_ACT = 480;parameter V_SYNC_FRONT= 11;parameter V_SYNC_TOTAL= 525; // 2+32+480+11=525 // Start Offsetparameter X_START = H_SYNC_CYC+H_SYNC_BACK;// 96 + 48=144 before 640parameter Y_START = V_SYNC_CYC+V_SYNC_BACK;// 2 + 32=34 before 480/*----------------------------------------------------------------- */// oVGA_CLK Generator, 50MHZ to 25MHZalways @(posedge iCLK_50 or negedge iCLRN) beginif(iCLRN == 0)vga_clk <= 1'b1;elsevga_clk <= ~vga_clk;end// H_Sync Counteralways @(posedge vga_clk or negedge iCLRN) beginif(iCLRN==0)h_count <= 10'd0;else if (h_count == H_SYNC_TOTAL)h_count <= 10'd0;elseh_count = h_count + 10'd1;end// V_Sync Counteralways @(posedge vga_clk or negedge iCLRN) beginif (iCLRN==0)v_count <= 10'd0;else if (h_count == H_SYNC_TOTAL) beginif(v_count == V_SYNC_TOTAL)v_count <= 10'd0;elsev_count = v_count + 10'd1;endendalways @(posedge vga_clk) begincase(state0)3'd0:out0 = (h_count>=X_START+x0-64) && (h_count<=X_START+x0) && (((v_count>=Y_START+y0-64) && (v_count<=Y_START+y0) && (h_count-(x0+X_START)+64<=v_count-(y0+Y_START)+64)) || ((v_count>=Y_START+y0) && (v_count<=Y_START+y0+64) && (v_count+h_count-(x0+X_START)-(y0+Y_START)+64<64)));3'd1:out0 = (h_count>=X_START+x0-90) && (v_count>=Y_START+y0-90) && (h_count<=X_START+x0) && (v_count<=Y_START+y0) && (h_count+v_count-(x0+X_START)-(y0+Y_START)+180>90);3'd2:out0 = (v_count>=Y_START+y0-64) && (v_count<=Y_START+y0) && (((h_count>=X_START+x0-64) && (h_count<=X_START+x0) &&(h_count-(x0+X_START)+64>=v_count-(y0+Y_START)+64)) || ((h_count>=X_START+x0) && (h_count<=X_START+x0+64) && (h_count+v_count+64-(x0+X_START)-(y0+Y_START)<64)));3'd3:out0 = (h_count>=X_START+x0) && (v_count>=Y_START+y0-90) && (h_count<=X_START+x0+90) && (v_count<=Y_START+y0) && (h_count-(x0+X_START)<=v_count-(y0+Y_START)+90);3'd4:out0 = (h_count>=X_START+x0) && (h_count<=X_START+x0+64) && (((v_count<=Y_START+y0) && (v_count>=Y_START+y0-64) && (h_count+v_count-(x0+X_START)-(y0+Y_START)+64>=64)) || ((v_count>=Y_START+y0) && (v_count<=Y_START+y0+64) && (h_count-(x0+X_START)>=v_count-(y0+Y_START))));3'd5:out0 = (h_count>=X_START+x0) && (v_count>=Y_START+y0) && (h_count<=X_START+x0+90) && (v_count<=Y_START+y0+90) && (h_count+v_count-(x0+X_START)-(y0+Y_START)<=90);3'd6:out0 = (v_count>=Y_START+y0) && (v_count<=Y_START+y0+64) && (((h_count<=X_START+x0+64) && (h_count>=X_START+x0) && (h_count-(x0+X_START)<=v_count-(y0+Y_START))) || ((h_count<=X_START+x0) && (h_count>=X_START+x0-64) && (h_count+v_count-(x0+X_START)-(y0+Y_START)+64>=64)));3'd7:out0 = (h_count>=X_START+x0-90) && (v_count>=Y_START+y0) && (h_count<=X_START+x0) && (v_count<=Y_START+y0+90) && (h_count-(x0+X_START)+90>=v_count-(y0+Y_START));endcasecase(state1)3'd0:out1 = (v_count>=Y_START+y1) && (v_count<=Y_START+y1+64) && (((h_count<=X_START+x1+64) && (h_count>=X_START+x1) && (h_count-(x1+X_START)<=v_count-(y1+Y_START))) || ((h_count<=X_START+x1) && (h_count>=X_START+x1-64) && (h_count+v_count-(x1+X_START)-(y1+Y_START)+64>=64)));3'd1:out1 = (h_count>=X_START+x1-90) && (v_count>=Y_START+y1) && (h_count<=X_START+x1) && (v_count<=Y_START+y1+90) && (h_count-(x1+X_START)+90>=v_count-(y1+Y_START));3'd2:out1 = (h_count>=X_START+x1-64) && (h_count<=X_START+x1) && (((v_count>=Y_START+y1-64) && (v_count<=Y_START+y1) && (h_count-(x1+X_START)+64<=v_count-(y1+Y_START)+64)) || ((v_count>=Y_START+y1) && (v_count<=Y_START+y1+64) && (v_count+h_count-(x1+X_START)-(y1+Y_START)+64<64)));3'd3:out1 = (h_count>=X_START+x1-90) && (v_count>=Y_START+y1-90) && (h_count<=X_START+x1) && (v_count<=Y_START+y1) && (h_count+v_count-(x1+X_START)-(y1+Y_START)+180>90);3'd4:out1 = (v_count>=Y_START+y1-64) && (v_count<=Y_START+y1) && (((h_count>=X_START+x1-64) && (h_count<=X_START+x1) && (h_count-(x1+X_START)+64>=v_count-(y1+Y_START)+64)) || ((h_count>=X_START+x1) && (h_count<=X_START+x1+64) && (h_count+v_count+64-(x1+X_START)-(y1+Y_START)<64)));3'd5:out1 = (h_count>=X_START+x1) && (v_count>=Y_START+y1-90) && (h_count<=X_START+x1+90) && (v_count<=Y_START+y1) && (h_count-(x1+X_START)<=v_count-(y1+Y_START)+90);3'd6:out1 = (h_count>=X_START+x1) && (h_count<=X_START+x1+64) && (((v_count<=Y_START+y1) && (v_count>=Y_START+y1-64) && (h_count+v_count-(x1+X_START)-(y1+Y_START)+64>=64)) || ((v_count>=Y_START+y1) && (v_count<=Y_START+y1+64) && (h_count-(x1+X_START)>=v_count-(y1+Y_START))));3'd7:out1 = (h_count>=X_START+x1) && (v_count>=Y_START+y1) && (h_count<=X_START+x1+90) && (v_count<=Y_START+y1+90) && (h_count+v_count-(x1+X_START)-(y1+Y_START)<=90);endcasecase(state2)3'd0:out2 = (h_count>=X_START+x2-64) && (v_count>=Y_START+y2) && (h_count<=X_START+x2) && (v_count<=Y_START+y2+64) && (h_count-(x2+X_START)+64>=v_count-(y2+Y_START));3'd1:out2 = (h_count>=X_START+x2-45) && (h_count<=X_START+x2) && (((v_count>=Y_START+y2-45) && (v_count<=Y_START+y2) && (h_count-(x2+X_START)+45<=v_count-(y2+Y_START)+45)) || ((v_count>=Y_START+y2) && (v_count<=Y_START+y2+45) && (v_count+h_count-(x2+X_START)-(y2+Y_START)+45<45)));3'd2:out2 = (h_count>=X_START+x2-64) && (v_count>=Y_START+y2-64) && (h_count<=X_START+x2) && (v_count<=Y_START+y2) && (h_count+v_count-(x2+X_START)-(y2+Y_START)+128>64);3'd3:out2 = (v_count>=Y_START+y2-45) && (v_count<=Y_START+y2) && (((h_count>=X_START+x2-45) && (h_count<=X_START+x2) && (h_count-(x2+X_START)+45>=v_count-(y2+Y_START)+45)) || ((h_count>=X_START+x2) && (h_count<=X_START+x2+45) && (h_count+v_count+45-(x2+X_START)-(y2+Y_START)<45)));3'd4:out2 = (h_count>=X_START+x2) && (v_count>=Y_START+y2-64) && (h_count<=X_START+x2+64) && (v_count<=Y_START+y2) && (h_count-(x2+X_START)<=v_count-(y2+Y_START)+64);3'd5:out2 = (h_count>=X_START+x2) && (h_count<=X_START+x2+45) &&(((v_count<=Y_START+y2) && (v_count>=Y_START+y2-45) && (h_count+v_count-(x2+X_START)-(y2+Y_START)+45>=45)) || ((v_count>=Y_START+y2) && (v_count<=Y_START+y2+45) && (h_count-(x2+X_START)>=v_count-(y2+Y_START))));3'd6:out2 = (h_count>=X_START+x2) && (v_count>=Y_START+y2) && (h_count<=X_START+x2+64) && (v_count<=Y_START+y2+64) && (h_count+v_count-(x2+X_START)-(y2+Y_START)<=64);3'd7:out2 = (v_count>=Y_START+y2) && (v_count<=Y_START+y2+45) && (((h_count<=X_START+x2+45) && (h_count>=X_START+x2) && (h_count-(x2+X_START)<=v_count-(y2+Y_START))) || ((h_count<=X_START+x2) && (h_count>=X_START+x2-45) && (h_count+v_count-(x2+X_START)-(y2+Y_START)+45>=45)));endcasecase(state3)1'b0:out3 = (h_count>=X_START+x3) && (v_count>=Y_START+y3) && (h_count<=X_START+x3+45) && (v_count<=Y_START+y3+45);1'b1:out3 = ((h_count>=X_START+x3-32) && (h_count<=X_START+x3) && (v_count>=Y_START+y3) && (v_count<=Y_START+y3+32) && (h_count-(X_START+x3)+32+v_count-(Y_START+y3)>=32)) || ((h_count>=X_START+x3) && (v_count>=Y_START+y3) && (h_count<=X_START+x3+32) && (v_count<=Y_START+y3+32) && (h_count-(X_START+x3)<=v_count-(Y_START+y3))) ||((h_count>=X_START+x3-32) && (h_count<=X_START+x3) && (v_count>=Y_START+y3+32) && (v_count<=Y_START+y3+64) && (h_count-(X_START+x3)+32>=v_count-(Y_START+y3)-32)) || ((h_count>=X_START+x3) && (h_count<=X_START+x3+32) && (v_count>=Y_START+y3+32) && (v_count<=Y_START+y3+64) && (h_count-(X_START+x3)+v_count-(Y_START+y3)-32<=32));endcasecase(state4)2'd0:out4 = (v_count>=Y_START+y4) && (v_count<=Y_START+y4+45) && (((h_count>=X_START+x4) && (h_count<=X_START+x4+45) && (h_count-(X_START+x4)>=v_count-(Y_START+y4))) || ((h_count>=X_START+x4+45) && (h_count<=X_START+x4+90) && (h_count-(X_START+x4)-45<=v_count-(Y_START+y4))));2'd1:out4 = (h_count>=X_START+x4) && (h_count<=X_START+x4+32) && (((v_count>=Y_START+y4) && (v_count<=Y_START+y4+32) && (h_count-(X_START+x4)<=v_count-(Y_START+y4))) || ((v_count>=Y_START+y4+32) && (v_count<=Y_START+y4+64)) || ((v_count>=Y_START+y4+64) && (v_count<=Y_START+y4+96) && (h_count-(X_START+x4)>=v_count-(Y_START+y4)-64)));2'd2:out4 = (h_count>=X_START+x4-45) && (v_count>=Y_START+y4) && (h_count<=X_START+x4) && (v_count<=Y_START+y4+90) &&(h_count-(X_START+x4)+45+v_count-(Y_START+y4)>=45) && (h_count-(X_START+x4)+v_count-(Y_START+y4)<=45);2'd3:out4 = (h_count>=X_START+x4-90) && (v_count>=Y_START+y4) && (h_count<=X_START+x4) && (v_count<=Y_START+y4+45) && (h_count-(X_START+x4)+90+v_count-(Y_START+y4)>=45) && (h_count-(X_START+x4)+45+v_count-(Y_START+y4)<=45);endcasecase(state5)3'd0:out5 = (v_count>=Y_START+y5-32) && (v_count<=Y_START+y5) && (((h_count>=X_START+x5-32) && (h_count<=X_START+x5) && (h_count-(x5+X_START)+32>=v_count-(y5+Y_START)+32)) || ((h_count>=X_START+x5) && (h_count<=X_START+x5+32) && (h_count+v_count+32-(x5+X_START)-(y5+Y_START)<32)));3'd1:out5 = (h_count>=X_START+x5) && (v_count>=Y_START+y5-45) && (h_count<=X_START+x5+45) && (v_count<=Y_START+y5) && (h_count-(x5+X_START)<=v_count-(y5+Y_START)+45);3'd2:out5 = (h_count>=X_START+x5) && (h_count<=X_START+x5+32) && (((v_count<=Y_START+y5) && (v_count>=Y_START+y5-32) && (h_count+v_count-(x5+X_START)-(y5+Y_START)+32>=32)) || ((v_count>=Y_START+y5) && (v_count<=Y_START+y5+32) && (h_count-(x5+X_START)>=v_count-(y5+Y_START))));3'd3:out5 = (h_count>=X_START+x5) && (v_count>=Y_START+y5) && (h_count<=X_START+x5+45) && (v_count<=Y_START+y5+45) && (h_count+v_count-(x5+X_START)-(y5+Y_START)<=45);3'd4:out5 = (v_count>=Y_START+y5) && (v_count<=Y_START+y5+32) && (((h_count<=X_START+x5+32) && (h_count>=X_START+x5) && (h_count-(x5+X_START)<=v_count-(y5+Y_START))) || ((h_count<=X_START+x5) && (h_count>=X_START+x5-32) && (h_count+v_count-(x5+X_START)-(y5+Y_START)+32>=32)));3'd5:out5 = (h_count>=X_START+x5-45) && (v_count>=Y_START+y5) && (h_count<=X_START+x5) && (v_count<=Y_START+y5+45) && (h_count-(x5+X_START)+45>=v_count-(y5+Y_START));3'd6:out5 = (h_count>=X_START+x5-32) && (h_count<=X_START+x5) && (((v_count>=Y_START+y5-32) && (v_count<=Y_START+y5) && (h_count-(x5+X_START)+32<=v_count-(y5+Y_START)+32)) || ((v_count>=Y_START+y5) && (v_count<=Y_START+y5+32) && (v_count+h_count-(x5+X_START)-(y5+Y_START)+32<32)));3'd7:out5 = (h_count>=X_START+x5-45) && (v_count>=Y_START+y5-45) && (h_count<=X_START+x5) && (v_count<=Y_START+y5) &&(h_count+v_count-(x5+X_START)-(y5+Y_START)+90>45);endcasecase(state6)3'd0:out6 = (h_count>=X_START+x6) && (h_count<=X_START+x6+32) && (((v_count<=Y_START+y6) && (v_count>=Y_START+y6-32) && (h_count+v_count-(x6+X_START)-(y6+Y_START)+32>=32)) || ((v_count>=Y_START+y6) && (v_count<=Y_START+y6+32) && (h_count-(x6+X_START)>=v_count-(y6+Y_START))));3'd1:out6 = (h_count>=X_START+x6) && (v_count>=Y_START+y6) && (h_count<=X_START+x6+45) && (v_count<=Y_START+y6+45) && (h_count+v_count-(x6+X_START)-(y6+Y_START)<=45);3'd2:out6 = (v_count>=Y_START+y6) && (v_count<=Y_START+y6+32) && (((h_count<=X_START+x6+32) && (h_count>=X_START+x6) && (h_count-(x6+X_START)<=v_count-(y6+Y_START))) || ((h_count<=X_START+x6) && (h_count>=X_START+x6-32) && (h_count+v_count-(x6+X_START)-(y6+Y_START)+32>=32)));3'd3:out6 = (h_count>=X_START+x6-45) && (v_count>=Y_START+y6) && (h_count<=X_START+x6) && (v_count<=Y_START+y6+45) && (h_count-(x6+X_START)+45>=v_count-(y6+Y_START));3'd4:out6 = (h_count>=X_START+x6-32) && (h_count<=X_START+x6) && (((v_count>=Y_START+y6-32) && (v_count<=Y_START+y6) && (h_count-(x6+X_START)+32<=v_count-(y6+Y_START)+32)) || ((v_count>=Y_START+y6) && (v_count<=Y_START+y6+32) && (v_count+h_count-(x6+X_START)-(y6+Y_START)+32<32)));3'd5:out6 = (h_count>=X_START+x6-45) && (v_count>=Y_START+y6-45) && (h_count<=X_START+x6) && (v_count<=Y_START+y6) && (h_count+v_count-(x6+X_START)-(y6+Y_START)+90>45);3'd6:out6 = (v_count>=Y_START+y6-32) && (v_count<=Y_START+y6) && (((h_count>=X_START+x6-32) && (h_count<=X_START+x6) && (h_count-(x6+X_START)+32>=v_count-(y6+Y_START)+32)) || ((h_count>=X_START+x6) && (h_count<=X_START+x6+32) && (h_count+v_count+32-(x6+X_START)-(y6+Y_START)<32)));3'd7:out6 = (h_count>=X_START+x6) && (v_count>=Y_START+y6-45) && (h_count<=X_START+x6+45) && (v_count<=Y_START+y6) && (h_count-(x6+X_START)<=v_count-(y6+Y_START)+45);endcaseif (out0) beginoVGA_R <= 10'b1111111111;oVGA_G <= 10'b0000000000;oVGA_B <= 10'b0000000000;endelse if (out1) beginoVGA_R <= 10'b0000000000;oVGA_G <= 10'b1111111111;oVGA_B <= 10'b0000000000;endelse if (out2) beginoVGA_R <= 10'b0000000000;oVGA_G <= 10'b0000000000;oVGA_B <= 10'b1111111111;endelse if (out3) beginoVGA_R <= 10'b1111111111;oVGA_G <= 10'b1111111111;oVGA_B <= 10'b0000000000;endelse if (out4) beginoVGA_R <= 10'b1111111111;oVGA_G <= 10'b0000000000;oVGA_B <= 10'b1111111111;endelse if (out5) beginoVGA_R <= 10'b0000000000;oVGA_G <= 10'b1111111111;oVGA_B <= 10'b1111111111;endelse if (out6) beginoVGA_R <= 10'b1000000000;oVGA_G <= 10'b1000000000;oVGA_B <= 10'b1000000000;endelse beginoVGA_R <= 10'b0000000000;oVGA_G <= 10'b0000000000;oVGA_B <= 10'b0000000000;endcase(choose)3'd0:if(out0) beginoVGA_R <= 10'b1111111111;oVGA_G <= 10'b1111111111;oVGA_B <= 10'b1111111111;end3'd1:。

相关文档
最新文档