数字逻辑与数字系统课程设计--八位数字频率计_第1页
数字逻辑与数字系统课程设计--八位数字频率计_第2页
数字逻辑与数字系统课程设计--八位数字频率计_第3页
数字逻辑与数字系统课程设计--八位数字频率计_第4页
数字逻辑与数字系统课程设计--八位数字频率计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字逻辑与数字系统课程设计 -八位数字频率计 学 院 : 计算机学院专 业 : 计算机科学与技术班 级 : 计1013姓 名 : 董梦学 号 : 202158501316指导教师 : 沈春华2012年1月5日一,设计任务与要求1, 实验说明2, 实验要求二,总体框图1, 结构的总体框图2, 框图的说明3, 设计思路4, 方案设计三,功能模块及说明1, 模8计数器的模块2, 模10计数器的模块3, 模32计数器的模块4, 8选1四位数据选择器的模块5, 七段显示译码器的模块6, 存储器的模块四,总体设计结构图1, 总体原理五,总结,心得体会六,感谢语八位数字频率计1. 设计任务与要求1实验说明:

2、采用一个标准的基准时钟,在单位时间1s里对被侧信号的脉冲数进行计数,即为信号的频率。2实验要求: 设计一个8位数字频率计:可以测量从1Hz到99 999 999Hz的信号频率并将被测信号的频率在8个数码管上显示出来。 2. 总体框图1,结构的总体框图模32计数器模8计数器8个模10计数器存放器八选一七段显示 电路的总体框图2, 框图的说明1说明:此电路由六局部组成 2它们分别是8个模10计数器,模8计数器,模32计数器,存放器,八选一四位数据选择器,七段显示译码器1 8个模10计数器是计数模块,它的输入端接待测频率。2 模8计数器控制模块,它的输出端分别接八选一的地址端和8的数码显示管的选择端

3、。3 模32计数器是一个计时模块,它的输入端口接一个32Hz的频率,控制一秒的时间。4 存放器起到存放作用,在一秒时将计数模块的结果存放起来。5 八选一将8个模10的芯片分别与8个数码显示管一一对应6 七段显示译码器决定了数码管的显示方式。3,设计思路 测频率就是测一秒内待测信号通过的脉冲数,既然这样,就必须有一个计时模块来控制一秒钟,所以可以设计一个模32的计数器其输入接32Hz的频率,输出端口co每32个脉冲输出1,因此co为一秒后由0变为1。然后八位数码显示管都要可以从0显示到9,因此要把八个模10的计数器串联在一起并且与八个显示管建立关联,用模8计数器和八选一两个芯片来实现这个功能,把

4、模8的输出三个端口一方面作为八选一的地址端输入,另一方面连接到8个数码显示管的选择端上。既然用到了数码显示管就要考虑它的接法,因此还需要一个七段显示译码器来实现。为了减小误差还要给模10计数器和模32计数器加一个清零端,手动清零时同步清零,清零端无效是开始计数。4,方案设计 为了防止数码管上显示的数出现累加,让它停在一秒上,还要可以屡次测量不同频率而不用每次都下载,所以要设计几种不同的方案。方案一:给模10计数器加控制端,让它在一秒后停止计数。方案二:给模32计数器添加控制端,让它在一秒后停止输出。方案三:给模0加清零端,一秒后给它清零,防止它再计数。 经过分析和实验验证方案三是错误的,数码管

5、会始终显示零,而实验一稍微复杂一些,因此决定用实验二,将模32的输出端co反接到它的使能端,另其一秒后就停止计数。3. 功能模块及说明1, 模8计数器的模块 (1) 波形图2代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY m8 IS PORT(clk:IN STD_LOGIC;s0,s1,s2:OUT STD_LOGIC);END m8;ARCHITECTURE m8x OF m8 ISSignal qx: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPR

6、OCESS(clk)BEGIN IF(clk'event and clk='1') THEN IF(qx="111") THEN qx<="000" ELSE qx<=qx+1; END IF; END IF; END PROCESS; s2<=qx(2);s1<=qx(1);s0<=qx(0);END m8x;3功能说明 该芯片有一个输入端口clk输入时钟信号,接一个高频信号。有三个输出信号分别为s0,s1,s2。 4芯片图2, 模10计数器的模块 1波形图2代码LIBRARY ieee;USE i

7、eee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY m10 IS PORT(clk,rd:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co:OUT STD_LOGIC);END m10;ARCHITECTURE m10x OF m10 ISSIGNAL qx:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(rd,clk) BEGIN IF(rd='1') THEN qx<="0000" c

8、o<='0' ELSIF(clk'event and clk='1') THEN IF(qx="1001") THEN qx<="0000" co<='1' ELSE qx<=qx+1; co<='0' END IF; END IF; END PROCESS; q<=qx;END m10x;3功能说明 该芯片有两个输入rd,clk和两个输出co,q,其中rd是清零端,clk为时钟输入,co是高位进位,q是一个四位的输出信号。 4芯片图3, 模32计

9、数器的模块1波形图2代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;ic_unsigned.ALL;ENTITY m32 IS PORT(rd,en,clk:IN STD_LOGIC; co:OUT STD_LOGIC);END m32;ARCHITECTURE m32x OF m32 ISSignal qx: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN PROCESS(rd,en,clk) BEGIN IF(rd='1')THEN qx<="00000" co<='0

10、9; ELSIF(clk'event and clk='1') THEN if(en='0')then IF(qx="11111") THEN qx<="00000" co<='1' ELSE qx<=qx+1; co<='0' end if; END IF; END IF; END PROCESS;END m32x;(1) 功能说明该芯片有两个输入端口,其中clk为时钟输入信号,en是低电平有效的使能端,co为想高位的进位,当中间变量为“1111时co由0变

11、为1. (2) 芯片图4, 8选1四位数据选择器的模块1波形图2代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY mux81 IS PORT(sx0,sx1,sx2:IN STD_LOGIC; d0,d1,d2,d3,d4,d5,d6,d7:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END mux81;ARCHITECTURE mu

12、x81x OF mux81 ISSignal qx:STD_LOGIC_VECTOR(3 DOWNTO 0);Signal sel:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN sel<=sx2&sx1&sx0;PROCESS(sel) BEGIN CASE sel IS WHEN"000"=>qx<=d0; WHEN"001"=>qx<=d1; WHEN"010"=>qx<=d2; WHEN"011"=>qx<=d3;

13、WHEN"100"=>qx<=d4; WHEN"101"=>qx<=d5; WHEN"110"=>qx<=d6; WHEN"111"=>qx<=d7; WHEN OTHERS =>qx<="XXXXXXXX" END CASE; END PROCESS; q<=qx;END mux81x;3功能说明 该芯片有11个输入端口,其中s0,s1,s1为地址输入,根据s2&s1&s0的值来确定来确定是哪一位数据输出;d7,

14、d6,d5,d4,d3,d2,d1,do是八个四位数据输入端,q是一个四位数据输出端,输出对应地址的数据。(3) 芯片图5, 七段显示译码器的模块1波形图2代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY yi7d IS PORT(bcdm:IN STD_LOGIC_VECTOR(3 DOWNTO 0); a,b,c,d,e,f,g:OUT STD_LOGIC);END yi7d;ARCHITECTURE yi7dx OF yi7d ISSignal yx: STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN PROCESS(

15、bcdm) BEGIN a<=yx(6);b<=yx(5);c<=yx(4);d<=yx(3);e<=yx(2);f<=yx(1);g<=yx(0); CASE bcdm IS WHEN"0000"=>yx<="1111110" WHEN"0001"=>yx<="0110000" WHEN"0010"=>yx<="1101101" WHEN"0011"=>yx<=&q

16、uot;1111001" WHEN"0100"=>yx<="0110011" WHEN"0101"=>yx<="1011011" WHEN"0110"=>yx<="1011111" WHEN"0111"=>yx<="1110000" WHEN"1000"=>yx<="1111111" WHEN"1001"=&

17、gt;yx<="1111011" WHEN OTHERS =>yx<="0000000" END CASE; END PROCESS;END yi7dx;3功能说明 该芯片有一个四位的输入,七个一位的输出。设计芯片会根据输入的四位二进制码来确定各个二极管的亮灭。4芯片图6, 存储器的模块1波形图2代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY chufa IS PORT(clk:IN STD_LOGIC; a1,b1,c1

18、,d1,e1,f1,g1,h1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); a2,b2,c2,d2,e2,f2,g2,h2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END chufa;ARCHITECTURE chufax OF chufa ISBEGIN PROCESS(clk) BEGIN IF(clk'event and clk='1') THEN a2<=a1; b2<=b1; c2<=c1; d2<=d1; e2<=e1; f2<=f1; g2<=g1; h2<=h

19、1; END IF; END PROCESS;END chufax;3功能说明 该芯片有九个输入,其中clk为时钟信号,另外八个是四位数据的输入端口。八个四位数据的输出端口。当clk由0变为1时,将八个输入端口的值赋给八个输出端口并及时输出。(4) 芯片图 4. 总体设计结构图1总体原理将jishiclk输入端接到32Hz的频率上,给kozhiclk输入端一个高频输入,然后给daiceclk端一个待测频率,将rd输入端手动接到高电平清零。将输出端口的s0,s1,s2接到电路箱子上数码显示管的sel0,sel1,sel2上,再把输出端口的a,b,c,d,e,f,g接到数码显示管的a,b,c,d,

20、e,f,g上。最后将lastco即八个模10的最高位进位接到一个二极管上。然后将清零端接到低电平,模10跟模32同时计数,当一秒时,模32输出端co由0变为1,启动存放器将八个模10的结果存储到存放器中。同时,co反接到模32的使能端en,使模32暂停工作,即co保持一不变,并将存放器中的值送入八选一再送入七段显示译码器,最终显示到数码管上。当另测一个新的频率时,只需要将待测端接到新的频率上,并将清零端接到到电平再接到低电平即可。5. 总结,心得体会 这次课程设计学到了很多也收获了很多,事实证明黄天是不负有心人的。 首先学到的是要习惯在问题得不到解决的时候换一种思维或许会比拟清晰。比方在给模10计数器接使能端频频无效的情况下试着给模32的计数器接使能端就简单了很多,结果也就豁然开朗了。 然后学会的是要强迫自己去接受新的知识。比方说起初没有接存放器的时候结果总是出现高频累加的情况,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论