数字系统仿真与VHDL课程设计报告
- 格式:docx
- 大小:1010.07 KB
- 文档页数:19
数字系统仿真与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