2022年数字逻辑实验报告.docx

上传人:H****o 文档编号:57136834 上传时间:2022-11-03 格式:DOCX 页数:54 大小:605.58KB
返回 下载 相关 举报
2022年数字逻辑实验报告.docx_第1页
第1页 / 共54页
2022年数字逻辑实验报告.docx_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《2022年数字逻辑实验报告.docx》由会员分享,可在线阅读,更多相关《2022年数字逻辑实验报告.docx(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选学习资料 - - - - - - - - - 北京邮电高校课程设计报告课程设计 名称班 级07407074070740707407课 程 设 计 内 容数字规律与数字系统学 院运算机指导老师班内序号学 号同学姓名成果06071147马 钊14071155袁 泉21071162杨晨笛29071170罗亚群教案目地:把握isp LEVER 软件地使用方法,把握isp 器件地使用方法,用VHDL 进行较复杂规律电路地设计和调试,娴熟把握isp 器件地下载方法.基本内容: 1.简易电子琴 2.简易频率计 3.交通灯掌握 4.电子钟显示 5.药片装瓶系统试验方法:先用VHDL进行软件编程,然后下载到

2、ISP器件,进行硬件仿真试验.组员分工:详见各试验报告试验分工.同学 课程设计 报告(附页)遵照实践教案大纲并依据以下四方面综合评定成果:1、课程设计目地任务明确,选题符合教案要求,份量及难易程度 2、团队分工是否恰当与合理 3、综合运用所学学问,提高分析问题、解决问题及实践动手才能地成效课 程 设4、是否认真、独立完成属于自己地课程设计内容,课程设计报告是否思路清 晰、文字通顺、书写规范 评语 : 计 成 绩 评 定成果 :指导老师签名:名师归纳总结 注:评语要表达每个同学地工作情形,可以加页. 年月日第 1 页,共 33 页- - - - - - -精选学习资料 - - - - - - -

3、 - - 目录试验一:简易电子琴 . 2试验二:简易频率计 . 4试验三:交通灯掌握器设计 . 9试验四:电子钟设计 . 14试验五:药片装瓶系统设计 . 23附:数字规律与数字系统课程设计心得体会 . 31试验一:简易电子琴一、试验目地 把握较复杂规律地设计和调试 . 把握用 VHDL 语言设计数字规律电路 . 把握 ispLEVER软件地使用方法 . 把握 ISP器件地使用 . 用途 : 有电子琴地基本功能,可弹奏出简洁地乐曲 . 二、试验所用器件和设备在系统可编程规律器件 ISP1032 一片示波器 一台万用表或规律笔 一只TEC-5试验系统,或 TDS-2B数字电路试验系统 一台三、试

4、验原理用 VHDL设计一个简易电子琴 . 有 8 个按键,每键代表一个音符 子琴地按键排列次序 ., 1、2、3、4、5、6、7、i 各音符按肯定地次序排列,须符合电名师归纳总结 每个音符对应特定地频率地方波信号. 第 2 页,共 33 页方波信号由多模计数器产生. 方波信号占空比可转变音量大小. - - - - - - -精选学习资料 - - - - - - - - - 图 1-1 简易电子琴原理图四、设计方案输入地主频 =50KHz,不同地键产生不同频率地输出,输出由多模计数器产生 . 多模计数器: M (模) =50000/f 音1234567i符 C频262 294 330 349 3

5、92 440 494 523 率Hz模191 170 151 143 128 114 101 97 多模计数器输出波形:二分频计数器:音符 C1234567i模95 84 75 71 63 56 50 47 (转变音量使输出信号占空比为50%)五、代码实现LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY piano is portclk:in std_logic ;-时钟源为 50kHz k:in std_logic_vector7 downto 0 ;-从高位到低位对应 1,2,3,

6、4,5,6,7,i dout:out std_logic ;-输出至喇叭 end piano ;ARCHITECTURE art of piano is signal temp,m:integer range 0 to 127 ;-temp 为计数值 ,m 为计数器模值 begin processclk,k-模 m 计数器 variable a:std_logic; begin case k is when 10000000 = m m m m m m m m m=0; end case; ifclkevent and clk=1 then - 对 50kHz 原始信号进行 if temp=m

7、 then temp=0; a:=not a; -“ 翻转 ”信号 ,实现信号占空比 50% else temp=temp+1; end if; end if; dout=a; end process;end ARCHITECTURE;六、试验中显现地问题及解决方法m 分频 ,再进行 2 分频由于学习 VHDL 编程已经过去一个学期,很多东西都已经不太清晰了 .第一个试验比较基础也比较简洁,所以过程中并没有遇到什么大问题,主要是一些小细节上地问题 .比方说,第一是 VHDL 地语法已经不太娴熟了,因此在复习 VHDL 硬件编程地基础上着重对语法进行了复习和记忆 .例如 case-is-when

8、 语句和 if-then-elsif 语句等 .然后,此试验中主要涉及地两个学问:模 m 计数器和二分频计数器 .m 地值是由 k 来打算地,也就是由开关来掌握 .而对信号二分频地时候,需要设定一个变量,在计数值加到 m 地时候对信号进行翻转,从而达到分频目地 .另外,是在对 ISP 器件地使用上 .以前只有一次试验实践操作过 ISP 器件,那时是在老师一步一步指导下进行操作,明白得并不是很全面很深化.这次完全是自己来操作了,所以对每一个步骤都会很留意 .对该软件地使用上也显现过一些错误,多次重来后解决 .七、本次试验地收成 作为学校期数字规律课程设计地第一个试验,充分表达了其基础性和概括性

9、.为了对程序有更好 地把握,不仅复习了一学期前所学习地 VHDL 地学问,更在此基础上扩宽了对 VHDL 地懂得和熟识,学到了更多地学问 .最重要地,是体会到了学以致用地乐趣 .另外,对在系统编程了设计流程也有了肯定地把握,对 ISP 器件地使用也有肯定地熟识 .作为一个开 始地基础试验,学到地东西仍是挺多地 .试验二:简易频率计一、试验目地名师归纳总结 - - - - - - -第 4 页,共 33 页精选学习资料 - - - - - - - - - 把握较复杂规律地设计和调试 . 把握用 VHDL语言设计数字规律电路 . 把握 ispLEVER软件地使用方法 . 把握 ISP器件地使用 .

10、 明白频率计地初步学问 . 二、试验所用器件和设备在系统可编程规律器件 ISP1032 一片示波器 一台万用表或规律笔 一只TEC-5试验系统,或 TDS-2B数字电路试验系统 一台三、试验内容设计一个简易频率计,用于测量 1MHz 以下数字脉冲信号地频率 .闸门只有 1s 一档 .测量结果在数码管上显示出来 .不测信号脉宽 .用一片 ISP 芯片实现此设计,并在试验台上完成调试,建议设计采用 VHDL语言编写 .四、设计思路频率计地基本工作原理如下:第一产生一系列精确闸门信号,例如1ms,0.1s 和 1s 等.然后用这些闸门信号掌握一个计数器对被测脉冲信号进行计数,最终将结果显示出来 .假

11、如闸门信号是 1s,那么 1s 内计数地结果就是被测信号地频率 .假如闸门信号是 1ms,那么计数结果是被测信号频率地千分之一,或者说结果是以 kHz 为单位地频率值 .频率计中,最原始地时基信号精确度肯定要高 .建议用试验台上地 5kHz 时钟信号做原始时基信号 . 1s 地闸门信号,由5kHz 时钟经 5K 分频后,再经2 分频产生 .这样产生地闸门信号脉宽是1s,占空比是 50%.在 2s 地时间内, 1s 用于计数, 1s 用于显示结果 .用于被测信号计数地计数器应采纳十进制 .测得地结果可直接送试验台上地 6 个数码管显示 .每次对被测信号计数前,计数器应被清零 .图 2-1 简易频

12、率计原理图 图 2-2 简易频率计模块设计五、设计方案模块:顶层模块LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;名师归纳总结 - - - - - - -第 5 页,共 33 页精选学习资料 - - - - - - - - - ENTITY frequency is portclk1,clk2:in std_logic ; -clk1 为 5kHz 地原始时基信号 ,clk2 为被测信号 dout:out std_logic_vector19 downto 0; -输出至低 5 位数码管 dec

13、:out std_logic_vector6 downto 0 ; -译码结果送最高位数码管 end frequency ;ARCHITECTURE art of frequency is component counter10 - 十进制计数器元件声明 port clk,cd,en:in std_logic ; -clk 时钟 ,cd 清零 ,en 使能 qout:out std_logic_vector3 downto 0 ; -计数输出 cout:out std_logic; -进位输出 end component ; signal temp:std_logic_vector19 dow

14、nto 0 ; -十进制计数结果地低 5 位 signal dec_temp:std_logic_vector3 downto 0 ; -十进制计数结果地最高位 signal c:std_logic_vector5 downto 0 ; -计数器每一位地进位信号 signal gate_sig,clr:std_logic; -闸门信号 ,清零信号 signal count:integer range 0 to 4999 ; -用于产生闸门信号时计数 begin u1:counter10 PORT MAP clk2,clr,gate_sig,temp3 downto 0,c0 ; -6 个十进制

15、计数器 u2:counter10 PORT MAP c0,clr,gate_sig,temp7 downto 4,c1 ; -低位计数器进位信号作 u3:counter10 PORT MAP c1,clr,gate_sig,temp11 downto 8,c2 ; -为高位计数器时钟信号 u4:counter10 PORT MAP c2,clr,gate_sig,temp15 downto 12,c3 ; u5:counter10 PORT MAP c3,clr,gate_sig,temp19 downto 16,c4 ; u6:counter10 PORT MAP c4,clr,gate_s

16、ig,dec_temp3 downto 0,c5 ; PROCESS1:processclk1 -对 5kHz 原始信号进行 begin if clk1event and clk1=1 then if count=4999 then count=0;5000 分频 ,再进行 2 分频 ,产生闸门信号 gate_sig=not gate_sig; -“翻转 ” 闸门信号 ,实现闸门信号占空比 50% else count=count+1; end if; end if; end process PROCESS1 clr=0 when count=4999 and gate_sig=0 else

17、- 在计数前对计数器清零 1; dout dec dec dec dec dec dec dec dec dec dec dec=0000000 ; end case; end process PROCESS2end art ;模块:一位十进制计数器(8421 码)LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY counter10 is portclk,cd,en:in std_logic ; -clk 时钟 ,cd 清零 ,en 使能 qout:out std_logic_vect

18、or3 downto 0 ; -计数输出 cout:out std_logic ; -进位输出 end counter10 ;ARCHITECTURE art of counter10 is signal temp:std_logic_vector3 downto 0 ;begin processclk,en,cd begin if cd=0 then -cd 有效计数器清零 temp=0000 ; elsif clkevent and clk=0 then - 时钟下降沿触发 if temp=1001 and en=1 then - 使能有效时计数 ,无效时停止计数 temp=0000; e

19、lsif en=1 then temp=temp+1; end if; end if; end process;名师归纳总结 - - - - - - -第 7 页,共 33 页精选学习资料 - - - - - - - - - qout=temp ; cout=1 when temp=1001 else - 计数到 9 时产生进位信号 0;end art ;六、调试中显现地问题及解决方法有了前面简易电子琴地设计,巩固了 ISP 器件地设计流程、编程方式,VHDL 地基本结构、语法要点、设计技巧等,编程过程中比较顺当,但是也遇到了一些问题 . 计数器采纳异步级联方式,即最低位计数器接入待测信号作为

20、时钟,其余计数器接入低位计数器地进位信号作为时钟,其中计数器在计到 9 时产生进位信号,利用时钟上升沿触发 .但是,由此产生地问题是高位提前加1(即: 000006,000007,000008 ,000019, 000010,000011,000012).这个问题很简洁解决,把时钟改为下降沿触发即可.1计数如何用闸门信号掌握计数器是否计时?在十进制计数器模块中添加使能信号en(en=器进行加1 计数, en=0时计数器保持),将闸门信号作为使能信号接入,即可实现1s 计数, 1s 显示 . 利用闸门信号 gate_sig= 对待测信号进行计数,gate_sig= 显示待测信号频率数,遇到地问题

21、是频率个数会累加 .解决地方法是:在十进制计数器模块中增加清零信号 .在闸门信号为0地最终一个计数周期(即 count=4999 and gate_sig=0 )时将频率计清零 . elsif clkevent and clk=0 and en=1 then 语句编译不通过,if 语句中只能单独判定时钟地上升沿(或者下降沿),不能在添加其他地判定条件 .解决方法是在 elsif clkevent and clk=0 then 下面地每个 if-else 语句中加 en=地判定条件 .即,if temp=1001 and en=1 then elsif en=1 then end if ; 由于

22、最初未在试验室编程,对试验台不熟识,对 6 个十进制计数器地输出都进行了七段显示译码,后来看到课本上地试验提示“测得地结果可直接送试验台上地 6 个数码管显示 ” 后,又把七段显示译码部分删去了 将 8421 码接入即可 .后来到了试验室才发觉最高位需要七段显示译码,其余位直接由于是第一次在实践中运用元件例化语句(component ),不是很熟识(不知道2 个.vhd 文件怎样关联起来),通过对上学期课程地复习,以及逐步地摸索,对例化语句有了深化地了解.七、层次设计地体会这次试验采纳层次设计利用闸门信号模块与(一位)十进制计数器模块对待测信号地上升沿进行计数 .有两个底层模块:一个模块产生0

23、.5Hz 占空比为50%地闸门信号;另一个模块是09 计数地十进制计数器 .利用层次设计地方法,结构明白、思路清晰、便于分析.并且将复杂问题简洁化、模块化、结构化,抽象问题详细化、简洁化 .特殊是元件例化语句使结构功能、端口连接一目了然,可以代码复用,防止重复代码,仍可以增强代码地可读性 .八、比较不同种描述方式地心得试验中结构体地三种描述方式都用到了:数据流描述、结构描述、行为描述 .数据流描述(用布尔代数描述系统地输入和输出)规律清晰、描述简洁.结构描述(分层次描述,高层可调用低层模块)使程序模块划分清晰,便于从宏观上把握程序功能,便于整体设计 .行为描述更简洁把握程序对于不同输入或者信号

24、所做地动作 .依据不怜悯形挑选不同描述方法可以使程序得到优化 .九、本次设计地收成和不足名师归纳总结 - - - - - - -第 8 页,共 33 页精选学习资料 - - - - - - - - - 本次设计最大地收成就是在电子琴地基础上对“分频 ”以及 “计数器 ”有了娴熟把握,进一步熟识了ispLEVER软件和 ISP 器件地使用与下载方法,这样会对后面两个试验帮忙很大 .首次尝试了例化语句地应用,对 VHDL 地懂得与应用有上了一个一个不小地台阶 .对硬件编程语言和 C+等高级语言地区别与联系有了较深刻地懂得,学会了用“硬件地方式 ”(比如说并行语句)摸索问题 .另外,小组成员之间地协

25、作也更加默契,效率也在不断地提高 .由于试验台只供应了 500kHz、 50kHz、 5kHz 三种频率地信号,只进行了 3 组测试,结果完全正确,而没有再编写程序产生其他频率信号进行测试 .十、试验分工试验调试由全体成员完成,其中顶层模块主要由马钊和罗亚群负责,计数器模块主要由袁泉和杨晨笛负责 . 试验三:交通灯掌握器设计一、试验目地 学习采纳状态机方法设计时序规律电路. . 把握 ispLEVER软件地使用方法. 把握用 VHDL 语言设计数字规律电路 把握 ISP器件地使用 . 二、试验所用器件和设备在系统可编程规律器件 ISP1032 一片示波器 一台万用表或规律笔 一只TEC-5试验

26、系统,或 TDS-2B数字电路试验系统 一台三、试验内容以试验台上地 4 个红色电平指示灯,4 个绿色电平指示灯仿照路口地东南西北 4 个方向地红,绿,黄交通灯 .掌握这些交通灯,使它们按以下规律亮,灭 .1 初始状态为 4 个方向地红灯全亮,时间 1s.2 东,西方向绿灯亮,南,北方向红灯亮 .东,西方向通车,时间 5s.3 东,西方向黄灯闪耀,南,北方向红灯,时间 2s.4 东,西方向红灯亮,南,北方向绿灯亮 .南,北方向通车,时间 5s.5 东,西方向红灯闪耀,南,北方向黄灯闪耀,时间 2s.6 返回 2,连续运行 .7 假如发生紧急大事,例如抢救车,警车通过,就按下单脉冲按钮,使得东,

27、南,西,北四个方向红灯亮 .紧急大事终止后,松开单脉冲按钮,将复原到被打断地状态连续运行 .四、设计思路1 熟识把握使用枚举类型数据格式结合CASE语句实现状态机设计.2 这是一个典型地时序状态机,一共6 个大地状态 .由于各个状态停留时间不同,但都是秒地倍数 .可以考虑设计当前状态与下一状态两个枚举型数据,每秒刷新旧状态值,各个状态地 timeout 时对下一状态赋值.名师归纳总结 3 黄灯闪耀可通过连续两0.2s,灭 0.2s 实现 .第 9 页,共 33 页4 挑选试验台上地5kHz 频率时钟,作为设计中分频地初始时钟5 紧急大事发生时,要留意储存必要地信息,已被紧急大事终止后,复原到原

28、状态连续运行使用.- - - - - - -精选学习资料 - - - - - - - - - 图 3-1 交通灯掌握框图五、设计方案LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY tralight is port restart,emergency,clk: in std_logic ; -restart 为复位信号 ,emergency 为紧急大事信号,clk 为试验台上地5kHz 频率时钟,作为设计中分频地初始时钟 light : out std_logic_vector11 downto 0 ; -light 输出到试验台上 12 个指示灯

29、ARCHITECTURE art of tralight is type trafficstate is s0,s1,s2,s3,s4 ; -交通灯状态 signal current_state,next_state: trafficstate ; -当前状态 ,转移状态 signal en1,en2,en3,en4, c,c1,c2,c3,c4: std_logic ; -en 为计数器使能掌握信号 ,c 为计数器进位信号 signal temp1: integer range 0 to 49999 ; -产生 1s 计数器时计数 signal temp2: integer range 0

30、to 99999 ; -产生 2s 计数器时计数 signal temp3: integer range 0 to 249999 ; -产生 5s 计数器时计数 signal temp4: integer range 0 to 9999 ; -产生 0.2s 计数器时计数 begin -1s 计数器 ,对 5kHz 原始信号进行5000 分频 ,每秒产生一个进位脉冲c1 processclk,en1 begin if clkevent and clk=1 then if temp1=49999 and en1=1 and emergency=0 then temp1=0; c1=1; elsi

31、f en1=1 and emergency=0 then temp1=temp1+1; c1=0; end if; end if; if en1=0 then c1=0; temp1=0; end if; end process; -2s 计数器 ,对 5kHz 原始信号进行10000 分频 ,每两秒产生一个进位脉冲c2 processclk,en2名师归纳总结 - - - - - - -第 10 页,共 33 页精选学习资料 - - - - - - - - - begin if clkevent and clk=1 then if temp2=99999 and en2=1 and emer

32、gency=0 then temp2=0; c2=1; elsif en2=1and emergency=0 then temp2=temp2+1; c2=0; end if; end if; if en2=0 then c2=0; temp2=0; end if; end process; -5s 计数器 ,对 5kHz 原始信号进行25000 分频 ,每五秒产生一个进位脉冲c3 processclk,en3 begin if clkevent and clk=1 then if temp3=249999 and en3=1 and emergency=0 then temp3=0; c3=

33、1; elsif en3=1 and emergency=0 then temp3=temp3+1; c3=0; end if; end if; if en3=0 then temp3=0; c3=0; end if; end process; -0.2s 计数器 ,对 5kHz 原始信号进行10000 分频 ,每 0.2 秒产生一个进位脉冲c4 processclk,en4 begin if clkevent and clk=1 then if temp4=9999 and en4=1 then temp4=0; c4=not c4; elsif en4=1 then temp4=temp4

34、+1; end if;名师归纳总结 - - - - - - -第 11 页,共 33 页精选学习资料 - - - - - - - - - end if; end process; c=c1 or c2 or c3; -进位信号掌握状态转移 process c,restart -状态转移进程 begin if restart=1 then- 复位信号使状态回到s0,即红灯全亮1s current_state=s0; elsif cevent and c=0 then- 遇到计数器进位转移到下一状态 current_state=next_state ; end if; end process; p

35、rocess current_state,emergency - 掌握状态转移 ,信号灯亮灭 begin ifemergency=1 then- 紧急状态红灯全亮 light -初始四个方向地红灯全亮 ,延时 1 秒 light=000000001111 ; en2=0; en3=0; en1=1; next_state -东西方向绿灯亮,南北方向红灯亮 ,延时 5 秒 en1=0; en2=0; light=010100001010 ; en3=1; next_state -东西方向黄灯闪,南北方向红灯亮 ,延时 2 秒 en3=0; en2=1; en4=1; light11 downto

36、 7 =00000 ; light6=c4; light5=0; light4=c4; light3 downto 0=1010 ; next_state -东西方向红灯亮,南北方向绿灯亮 en2=0; en4=0;名师归纳总结 - - - - - - -第 12 页,共 33 页精选学习资料 - - - - - - - - - en3=1; light=101000000101 ; next_state -东西方向红灯闪,南北方向黄灯闪 ,延时 2 秒 en3=0; en2=1; en4=1; light11 downto 8 =0000 ; light7=c4; light6=0; light5=c4; light4 downto 0=00101 ; next_state=s1; end case; end if; end process;end art ;六、调试中显现地问题及解决方法 这次试验总体思

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁