数字逻辑实验报告(共33页).doc
《数字逻辑实验报告(共33页).doc》由会员分享,可在线阅读,更多相关《数字逻辑实验报告(共33页).doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上北京邮电大学课程设计报告课程设计名称数字逻辑与数字系统学 院计算机指导教师班 级班内序号学 号学生姓名成绩0740706马 钊0740714袁 泉0740721杨晨笛0740729罗亚群课程设计内容教案目地:掌握isp LEVER 软件地使用方法,掌握isp器件地使用方法,用VHDL进行较复杂逻辑电路地设计和调试,熟练掌握isp器件地下载方法.基本内容: 1.简易电子琴 2.简易频率计 3.交通灯控制 4.电子钟显示 5.药片装瓶系统实验方法:先用VHDL进行软件编程,然后下载到ISP器件,进行硬件仿真实验.组员分工:详见各实验报告实验分工.学生课程设计报告(附页)课
2、程设计成绩评定遵照实践教案大纲并根据以下四方面综合评定成绩:1、课程设计目地任务明确,选题符合教案要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力地效果4、是否认真、独立完成属于自己地课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规范评语: 成绩:指导教师签名: 年 月 日注:评语要体现每个学生地工作情况,可以加页.目录实验一:简易电子琴一、实验目地掌握较复杂逻辑地设计和调试.掌握用VHDL语言设计数字逻辑电路.掌握ispLEVER软件地使用方法.掌握ISP器件地使用.用途: 有电子琴地基本功能,可弹奏出简单地乐曲.二、实验所用器
3、件和设备在系统可编程逻辑器件ISP1032一片示波器一台万用表或逻辑笔一只TEC-5实验系统,或TDS-2B数字电路实验系统一台三、实验原理 用VHDL设计一个简易电子琴.有8个按键,每键代表一个音符, 1、2、3、4、5、6、7、i各音符按一定地顺序排列,须符合电子琴地按键排列顺序.每个音符对应特定地频率地方波信号.方波信号由多模计数器产生.方波信号占空比可改变音量大小.图1-1 简易电子琴原理图四、设计方案输入地主频=50KHz,不同地键产生不同频率地输出,输出由多模计数器产生.多模计数器:M(模)=50000/f 音符 (C)1234567i频率(Hz)26229433034939244
4、0494523模19117015114312811410197多模计数器输出波形: 二分频计数器:音符 (C)1234567i模9584757163565047(改变音量使输出信号占空比为50%)五、代码实现LIBRARY ieee。USE ieee.std_logic_1164.all。USE ieee.std_logic_unsigned.all。ENTITY piano is port(clk:in std_logic。-时钟源为50kHz k:in std_logic_vector(7 downto 0)。-从高位到低位对应1,2,3,4,5,6,7,i dout:out std_lo
5、gic)。-输出至喇叭end piano。ARCHITECTURE art of piano is signal temp,m:integer range 0 to 127。-temp为计数值,m为计数器模值begin process(clk,k)-模m计数器 variable a:std_logic。 begin case k is when = m m m m m m m m m=0。 end case。 if(clkevent and clk=1) then -对50kHz原始信号进行m分频,再进行2分频 if (temp=m) then temp=0。 a:=not a。 -“翻转”信
6、号,实现信号占空比50% else temp=temp+1。 end if。 end if。 dout=a。 end process。end ARCHITECTURE。六、实验中出现地问题及解决方法由于学习VHDL编程已经过去一个学期,很多东西都已经不太清楚了.第一个实验比较基础也比较简单,所以过程中并没有遇到什么大问题,主要是一些小细节上地问题.比方说,首先是VHDL地语法已经不太熟练了,因此在复习VHDL硬件编程地基础上着重对语法进行了复习和记忆.例如case-is-when语句和if-then-elsif语句等.然后,此实验中主要涉及地两个知识:模m计数器和二分频计数器.m地值是由k来决
7、定地,也就是由开关来控制.而对信号二分频地时候,需要设定一个变量,在计数值加到m地时候对信号进行翻转,从而达到分频目地.另外,是在对ISP器件地使用上.以前只有一次实验实践操作过ISP器件,那时是在老师一步一步指导下进行操作,了解得并不是很全面很深入.这次完全是自己来操作了,所以对每一个步骤都会很留意.对该软件地使用上也出现过一些错误,多次重来后解决.七、本次实验地收获作为小学期数字逻辑课程设计地第一个实验,充分体现了其基础性和概括性.为了对程序有更好地把握,不仅复习了一学期前所学习地VHDL地知识,更在此基础上扩宽了对VHDL地理解和认识,学到了更多地知识.最重要地,是体会到了学以致用地乐趣
8、.另外,对在系统编程了设计流程也有了一定地掌握,对ISP器件地使用也有一定地熟悉.作为一个开始地基础实验,学到地东西还是挺多地.实验二:简易频率计一、实验目地掌握较复杂逻辑地设计和调试.掌握用VHDL语言设计数字逻辑电路.掌握ispLEVER软件地使用方法.掌握ISP器件地使用.了解频率计地初步知识.二、实验所用器件和设备在系统可编程逻辑器件ISP1032一片示波器一台万用表或逻辑笔一只TEC-5实验系统,或TDS-2B数字电路实验系统一台三、实验内容设计一个简易频率计,用于测量1MHz以下数字脉冲信号地频率.闸门只有1s一档.测量结果在数码管上显示出来.不测信号脉宽.用一片ISP芯片实现此设
9、计,并在实验台上完成调试,建议设计采用VHDL语言编写.四、设计思路频率计地基本工作原理如下:首先产生一系列准确闸门信号,例如1ms,0.1s和1s等.然后用这些闸门信号控制一个计数器对被测脉冲信号进行计数,最后将结果显示出来.如果闸门信号是1s,那么1s内计数地结果就是被测信号地频率.如果闸门信号是1ms,那么计数结果是被测信号频率地千分之一,或者说结果是以kHz为单位地频率值.频率计中,最原始地时基信号准确度一定要高.建议用实验台上地5kHz时钟信号做原始时基信号.1s地闸门信号,由5kHz时钟经5K分频后,再经2分频产生.这样产生地闸门信号脉宽是1s,占空比是50%.在2s地时间内,1s
10、用于计数,1s用于显示结果.用于被测信号计数地计数器应采用十进制.测得地结果可直接送实验台上地6个数码管显示.每次对被测信号计数前,计数器应被清零. 图2-1 简易频率计原理图 图2-2 简易频率计模块设计五、设计方案模块:顶层模块LIBRARY ieee。USE ieee.std_logic_1164.all。USE ieee.std_logic_unsigned.all。ENTITY frequency is port(clk1,clk2:in std_logic。 -clk1为5kHz地原始时基信号,clk2为被测信号 dout:out std_logic_vector(19 downt
11、o 0)。 -输出至低5位数码管 dec:out std_logic_vector(6 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_vector(3 downto 0)。 -计数输出 cout:out std_logic)。 -进位输出 end component。 signal temp:std_logi
12、c_vector(19 downto 0)。 -十进制计数结果地低5位 signal dec_temp:std_logic_vector(3 downto 0)。 -十进制计数结果地最高位 signal c:std_logic_vector(5 downto 0)。 -计数器每一位地进位信号 signal gate_sig,clr:std_logic。 -闸门信号,清零信号 signal count:integer range 0 to 4999。 -用于产生闸门信号时计数begin u1:counter10 PORT MAP (clk2,clr,gate_sig,temp(3 downto
13、0),c(0)。 -6个十进制计数器 u2:counter10 PORT MAP (c(0),clr,gate_sig,temp(7 downto 4),c(1)。 -低位计数器进位信号作 u3:counter10 PORT MAP (c(1),clr,gate_sig,temp(11 downto 8),c(2)。 -为高位计数器时钟信号 u4:counter10 PORT MAP (c(2),clr,gate_sig,temp(15 downto 12),c(3)。 u5:counter10 PORT MAP (c(3),clr,gate_sig,temp(19 downto 16),c(
14、4)。 u6:counter10 PORT MAP (c(4),clr,gate_sig,dec_temp(3 downto 0),c(5)。 PROCESS1:process(clk1) -对5kHz原始信号进行5000分频,再进行2分频,产生闸门信号 begin if (clk1event and clk1=1) then if (count=4999) then count=0。 gate_sig=not gate_sig。 -“翻转”闸门信号,实现闸门信号占空比50% else count=count+1。 end if。 end if。 end process PROCESS1。 c
15、lr=0 when (count=4999 and gate_sig=0) else -在计数前对计数器清零 1。 dout dec dec dec dec dec dec dec dec dec dec dec=。 end case。 end process PROCESS2。end art。模块:一位十进制计数器(8421码)LIBRARY ieee。USE ieee.std_logic_1164.all。USE ieee.std_logic_unsigned.all。ENTITY counter10 is port(clk,cd,en:in std_logic。 -clk时钟,cd清零,
16、en使能 qout:out std_logic_vector(3 downto 0)。 -计数输出 cout:out std_logic)。 -进位输出end counter10。ARCHITECTURE art of counter10 is signal temp:std_logic_vector(3 downto 0)。begin process(clk,en,cd) begin if (cd=0) then -cd有效计数器清零 temp=0000。 elsif (clkevent and clk=0) then -时钟下降沿触发 if (temp=1001 and en=1) the
17、n -使能有效时计数,无效时停止计数 temp=0000。 elsif (en=1) then temp=temp+1。 end if。 end if。 end process。 qout=temp。 cout=1 when temp=1001 else -计数到9时产生进位信号 0。end art。六、调试中出现地问题及解决方法有了前面简易电子琴地设计,巩固了ISP器件地设计流程、编程方式,VHDL地基本结构、语法要点、设计技巧等,编程过程中比较顺利,但是也遇到了一些问题. 计数器采用异步级联方式,即最低位计数器接入待测信号作为时钟,其余计数器接入低位计数器地进位信号作为时钟,其中计数器在计
18、到9时产生进位信号,利用时钟上升沿触发.但是,由此产生地问题是高位提前加1(即:,).这个问题很容易解决,把时钟改为下降沿触发即可. 如何用闸门信号控制计数器是否计时?在十进制计数器模块中添加使能信号en(en=1计数器进行加1计数,en=0时计数器保持),将闸门信号作为使能信号接入,即可实现1s计数,1s显示. 利用闸门信号gate_sig=1对待测信号进行计数,gate_sig=0显示待测信号频率数,遇到地问题是频率个数会累加.解决地方法是:在十进制计数器模块中增加清零信号.在闸门信号为0地最后一个计数周期(即count=4999 and gate_sig=0)时将频率计清零. elsif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑 实验 报告 33
限制150内