数电实验报告序列信号发生器的设计与实现

发布时间:2024-11-10

序列信号发生器的设计与实现

北京邮电大学

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

姓名: 李金隆

学号: 09210947--15

班级: 2009211204

学院: 电子工程学院

2011年5月1日

序列信号发生器的设计与实现

一、 实验名称:序列信号发生器的设计与实现

二、 实验任务要求:

1、 用VHDL语言设计实现一个信号发生器,产生的序列码为

01100111,仿真验证其波形,并下载到实验板测试。

2、 用VHDL语言设计实验一个序列长度为7的M序列发生器,

仿真验证其功能,并下载到实验班测试。

三、 设计思路与过程

1、 序列信号发生器

序列信号发生器的端口由一个时钟输入和两个输出,信号序列输出q_out和时钟输出clk_outt组成。程序由两个进程构成,第一个进程p1描述状态逻辑,使用if语句实现自启动;第二个进程p2描述输出逻辑,用case语句完成其功能。根据题目要求,在第1、4、5位置上输出为“0”,在其他位置上输出为“1”,每8位实现一次循环。

在实验过程中,首先在建立Quartus II软件中建立工程,然后再工程中建立VHDL文件,输入程序代码后保存调试,编译成功后,建立Vector Waveform文件进行仿真,仿真完毕后,在程序中引入分频器,编译,锁定引脚后,下载到实验板验证其功能。在实验板上用一个开关代表clear清零,两个LED一个显示输出序列,一个显示时钟序列clk_outt。

2、 M_序列信号发生器

M_序列信号发生器的端口由一个时钟输入clk和两个信号输出,

序列信号发生器的设计与实现

时钟输出clk_outt和序列信号输出q_out组成,进程p1描述状态逻辑,用if语句完成循环。实验过程与实验1类似。

四、 VHDL程序源代码

1、 序列信号发生器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity xinhao IS

port

(

clk:in std_logic;

clear:in std_logic;

q_out:out std_logic;

clk_outt:out std_logic

);--用户定义的输入输出及类型

end xinhao;

architecture a of xinhao is

component div50m

port

(

clk_in:in std_logic;

clk_out:out std_logic

);--用户定义分频器的输入输出及类型

end component;

signal tmp: integer range 0 to 7;

signal clock: std_logic;--用户定义的信号及其类型

begin

u1: div50m port map(clk_in=>clk,clk_out=>clock);--分频器的引入

p1:process(clock)--第一个进程p1描述状态逻辑

begin

if clock'event and clock='1' then

if tmp=7 then

tmp<=0;

else

序列信号发生器的设计与实现

tmp<=tmp+1;

end if;

end if;

end process p1;

p2: process(clear,tmp)—第二个进程描述输出逻辑

begin

if clear='0' then

q_out<='0';

else

case tmp is

when 0|3|4 =>q_out<='0';

when others =>q_out<='1';

end case;

end if;

end process p2;

clk_outt<=clk;

end a;

2、M序列信号发生器

library IEEE;

USE IEEE. std_logic_1164.all;

entity m_xulie is

port (

clk:in std_logic;

q_out:out std_logic;

clk_outt:out std_logic);--用户定义的输出输入及类型

end m_xulie;

architecture a of m_xulie is

component div50m

port

(

clk_in:in std_logic;

clk_out:out std_logic

);--用户定义分频器的输入的输出及类型

end component;

signal tmp:std_logic_vector (2 downto 0);

signal clock: std_logic;

begin

u1: div50m port map(clk_in=>clk,clk_out=>clock);--分频器的引入 p1:process(clk)—第一个进程P1描述状态逻辑

序列信号发生器的设计与实现

begin

if tmp= "000" then tmp <="001";

elsif clk'event and clk ='1' then

tmp(0)<=tmp(0) xor tmp(2);

tmp(1)<=tmp(0);

tmp(2)<=tmp(1);

end if;

end process p1;

q_out<=tmp(2);--数列信号的输出

clk_outt<=clk;

end a;

五、 RTL电路图

1、 序列信号发生器

2、 M_序列信号发生器

序列信号发生器的设计与实现

六、 仿真波形及其分析

1、序列信号发生器

从波形仿真图中可以看出,在时钟信号的上升沿,输出信号序列开始按01100111变化,当clear清零时,序列输出q_out也为“0”,时钟输出clk_outt相对于时钟输入clk有一定的时间延迟。

2、M序列信号发生器

由波形仿真图可以看出,序列长度为7的M序列信号发生器的输出序列为1110100,在时钟信号的上升沿开始变化,时钟输出clk_outt相对于时钟输入clk有一定的时间延迟。

序列信号发生器的设计与实现

七、 故障及问题分析

1、 VHDL语言编译问题

编译过程中的主要问题是文件命名时遇到的问题,在语句输入完毕后,存盘时文件名必须与实体名一致。

2、 波形仿真问题

实验时,要先进行波形仿真,再引入分频器,如果加入分频器后再进行仿真则无法得到仿真波形。在设置时间时,我刚开始用的是微秒级,虽然可以都到正确的波形,但时钟信号的延迟无法区别出来,当我把仿真时间改成纳秒级则可以很明显的看出时钟信号的延迟。

3、 下载问题

当引脚锁定后要编译后在菜单Tool中选择Programmer进行下载,下载完毕后发现得不到正确的结果,改变引脚设置,重新下载。实验板有些引脚对应的器件可能已经损坏。

八、 总结与结论

本学期的数字电路与逻辑设计实验共四次,除了第一次以外,其他几次实验都是通过软件Quartus II完成的。在第二次实验中,我们学习了软件的图形输入;第三次实验由两部分组成,VHDL组合逻辑电路设计和VHDL时序逻辑电路;第四次实验,序列信号发生器的设计与实现是一个相对综合一些的实验。

在实验过程中用到了VHDL语言,VHDL是Very-High-Speed Integrated Circuit HardwareDescription Language(超高速集成电路硬件描述语言)的缩写。它是一种用于电路设计的高级语言,VHDL

序列信号发生器的设计与实现

具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。

通过三次上机实验,我对Quartus II软件的基本功能及操作有了一定的了解,能够独立的完成一些程序的设计;对数字电路与逻辑设计这门课程有了新的认识,知道了一些数字电路与逻辑设计的运用,如交通灯控制器、数字温度计等等。同时实验和理论的结合加深了我对数字电路与逻辑设计理论知识的理解,很多不懂的地方通过实验中的直观感受都能弄清楚,搞明白。此外,我自主学习,发现问题、解决问题的能力得到了显著的提高。

数电实验报告序列信号发生器的设计与实现.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219