多功能信号发生器设计报告.doc

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

重庆大学城市科技学院电气学院EDA课程设计报告

题目:多功能信号发生器

专业:电子信息工程

班级:2006级03班

小组:第12组

学号及姓名:20060075蒋春

20060071冯志磊

20060070冯浩真

指导教师:戴琦琦

设计日期:2009-6-19

多功能信号发生器设计报告

一、设计题目

运用所掌握的VHDL语言,设计一个信号发生器,要求能输出正弦波、方波、三角波、锯齿波,并且能改变其输出频率以及波形幅度,能在示波器上有相应波形显示。

二、课题分析

(1).要能够实现四种波形的输出,就要有四个ROM(64*8bit)存放正弦波、方波、三角波、锯齿波的一个周期的波形数据,并且要有一个地址发生器来给ROM提供地址,ROM给出对应的幅度值。

(2).因为要设计的是个时序电路,所以要实现输出波形能够改变频率,就必须对输入的信号进行分频,以实现整体的频率的改变。

(3).设计要求实现调幅,必须对ROM输出的幅度信息进行处理。最简单易行的方法是对输出的8位的幅度进行左移(每移移位相当于对幅度值行除以二取整的计算),从而达到幅度可以调节的目的。同时为了方便观察,应再引出个未经调幅的信号作为对比。

三、设计的具体实现

1、系统概述

系统应该由五个部分组成:分频器(DVF)、地址发生器(CNT6B)、四个ROM 模块(data_rom_sin、data_rom_sqr、data_rom_tri、data_rom_c)、四输入多路选择器mux、幅度调节单元w。

2、单元电路设计与分析

外部时钟信号经过分频器分频后提供给地址发生器和ROM,四个ROM的输出接在多路选择器上,用于选择哪路信号作为输出信号,被选择的信号经过幅度调节单元的幅度调节后连接到外部的D/A转换器输出模拟信号。

(1)分频器(DVF)

分频器(DVF)的RTL截图

分频器(DVF)的源代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY DVF IS

PORT( D_MODE: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

D_CLK: IN STD_LOGIC;

D_OUT: OUT STD_LOGIC);

END DVF;

ARCHITECTURE behav of DVF IS

SIGNAL FULL: STD_LOGIC;

BEGIN

P_REG: PROCESS(D_CLK)

VARIABLE CNT8:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF D_CLK'EVENT AND D_CLK='1' THEN

IF CNT8="1111" THEN

CNT8:=D_MODE;

FULL<='1';

ELSE CNT8:=CNT8+1;

FULL<='0';

END IF;

END IF;

END PROCESS P_REG;

P_DIV:PROCESS(FULL)

VARIABLE CNT2:STD_LOGIC;

BEGIN

IF FULL'EVENT AND FULL='1' THEN

CNT2:=NOT CNT2;

IF CNT2='1' THEN D_OUT<='1'; ELSE D_OUT<='0';

END IF;

END IF;

END PROCESS P_DIV;

END behav;

(2)地址发生器(CNT6B)

地址发生器(CNT6B)的RTL截图

地址发生器(CNT6B)的源代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT6B IS

PORT (C_CLK,C_RST,C_EN : IN STD_LOGIC;

C_OUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0));

END CNT6B;

ARCHITECTURE behav OF CNT6B IS

SIGNAL CQI : STD_LOGIC_VECTOR(5 DOWNTO 0);

BEGIN

PROCESS(C_CLK,C_RST,C_EN)

BEGIN

IF C_RST = '1' THEN CQI <= (OTHERS =>'0') ; --计数器异步复位

ELSIF C_CLK'EVENT AND C_CLK='1' THEN --检测时钟上升沿

IF C_EN = '1' THEN CQI <= CQI + 1;

END IF;

END IF;

END PROCESS;

C_OUT<=CQI;

END behav;

(3)四个ROM模块

(data_rom_sin、data_rom_sqr、data_rom_tri、data_rom_c)data_rom_sin正弦波的ROM数据:

data_rom_sqr方波的ROM数据:

data_rom_tri三角波的ROM数据:

相关文档
最新文档