数字系统仿真与VHDL课程设计报告

  • 格式:docx
  • 大小:1010.07 KB
  • 文档页数:19

下载文档原格式

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

数字系统仿真与VHDL课程

设计报告

学院:信息与电气工程学院

专业:通信工程

班级:通信一班

姓名:李世辉

学号:0804040102

指导老师:张剑胡仕刚

设计时间:2010.1.3—2010.1.14

目录1.课程设计任务

2.课程设计目的

3.课程设计的基本要求

4.设计流程图

5.Max+plus II设计软件的基本操作6.课程设计内容

七.课程设计心得体会

一.课程设计的任务

1.本次设计的任务是熟悉支持VHDL语言的软件,例如:MAX—

PLUS2,ISP,FOUNDATION等,利用这一类软件使用VHDL语言进行设计。二.课程设计目的

1.熟练掌握相关软件的使用,操作。能对VHDL语言程序进行编译,调试,

以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。

2.在成功掌握软件操作基础上,将所学数字电路的基础课知识与VHDL语

言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际”。

3.深入了解VHDL语言的作用与价值,对用硬件语言设计一个电路系统开

始具备一个较完整的思路与较专业的经验。对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。

三.设计的基本要求

1.熟悉数字电路及相关专业课程的基本知识并能联系具体程序

2.正确操作使用VHDL语言相关软件,能编译,调试,仿真VHDL

语言程序

3.设计数字电路,编写程序,实现电路功能。

四. 设计流程图Array

五.Max+plus II设计软件的基本操作

1.设计输入

原理图设计输入法

文本设计输入法

波形输入法

层次化设计输入法

2.项目编译

语法检查和设计规则检查

设计综合

生成编程数据文件

3.仿真和定时分析

仿真(Simulation)

定时分析(Timing Analysis)

4.编程下载,调试与仿真

5.波形图的分析

六.课程设计内容

1.设计60进计数器

设计一个BCD码60进计数器。要求实现同步,异步两种情况,且规定个位显示0~9,十位显示0~5,均用4位二进制数表示。在此基础上试用VHDL 语言描述中小规模集成电路74LS169。

(1).60进制同步计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count60tb IS

PORT(clk,w1c,w2c,cin:IN STD_LOGIC;

cccc:OUT STD_LOGIC;

dddd_in:IN STD_LOGIC_VECTOR(3DOWNTO 0);

ge:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

shi:OUT STD_LOGIC_VECTOR(3DOWNTO0));

END ENTITY count60tb;

ARCHITECTURE example OF count60tb IS

SIGNAL ge_n:STD_LOGIC_VECTOR(3DOWNTO 0);

SIGNAL shi_n:STD_LOGIC_VECTOR(3DOWNTO 0);

BEGIN

ge<=ge_n;

shi<=shi_n;

PROCESS(clk,w1c)IS

BEGIN

IF(W1C='1')THEN

ge_n<=data_in(3DOWNTO 0);

ELSIF(clk'EVENT AND clk='1')THEN

IF(cin='1') THEN

IF(ge_n=9)THEN

ge_n<="0000";

ELSE

ge_n<=ge_n+'1';

END IF;

END IF;

END IF;

END PROCESS;

PROCESS(clk,w2c)IS

BEGIN

IF(w2c='1')THEN

shi_n<=data_in(3DOWNTO 0);

ELSIF(clk'EVENT AND clk='1')THEN

IF(cin='1'AND ge_n=9) THEN

IF(shi_n=5)THEN

shi_n<="0000";

ELSE

shi_n<=shi_n+'1';

END IF;

END IF;

END IF;

END PROCESS;

PROCESS(clk,ge_n,shi_n) IS

BEGIN

IF(clk'EVENT AND clk='1' )THEN

IF(ge_n=9AND shi_n=5AND cin='1') THEN cout<='1';

ELSE

cout<='0';

END IF;

END IF;

END PROCESS;

END ARCHITECTURE example;

(2)60进制异步计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count60yb IS

PORT(clk,w1c,w2c,cin1:IN STD_LOGIC;

cccc2:OUT STD_LOGIC;

dddd_in:IN STD_LOGIC_VECTOR(3DOWNTO 0);

ge:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

shi:OUT STD_LOGIC_VECTOR(3DOWNTO0)); END ENTITY count60yb;

ARCHITECTURE example OF count60yb IS

SIGNAL ge_n:STD_LOGIC_VECTOR(3DOWNTO 0); SIGNAL shi_n:STD_LOGIC_VECTOR(3DOWNTO 0); SIGNAL cin2,cout1:STD_LOGIC;

BEGIN

ge<=ge_n;

shi<=shi_n;

cin2<=cout1;

PROCESS(clk,w1c)IS

BEGIN

IF(W1C='1')THEN

ge_n<=data_in(3DOWNTO 0);

ELSIF(clk'EVENT AND clk='1')THEN

IF(cin1='1') THEN

IF(ge_n=9)THEN

ge_n<="0000";

ELSE