数字系统设计 实验一报告计091班姚伟08093342.docx
《数字系统设计 实验一报告计091班姚伟08093342.docx》由会员分享,可在线阅读,更多相关《数字系统设计 实验一报告计091班姚伟08093342.docx(20页珍藏版)》请在冰豆网上搜索。
数字系统设计实验一报告计091班姚伟08093342
数字系统设计基础实验报告
实验名称:
1.组合电路设计___
2.失序电路设计___
3.计数器的设计___
4.原理图设计加法器
学号:
___08093342______
姓名:
___姚伟_______
班级:
__计科09-1班_____
老师:
________
中国矿业大学计算机学院
2011年10月27日
实验一:
组合电路的设计
一.实验目的
熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、仿真和硬件测试。
二.实验任务
任务1:
利用QuartusⅡ完成2选1多路选择器的文本编辑输入和仿真测试等步骤,得出仿真波形。
最后在试验系统上进行硬件测试,验证本项设计的功能。
任务2:
将此多路选择器看成是一个元件mux21a,利用元件例化语句描述电路图,并将此文件放在同一目录中。
对于任务中的例子分别进行编译、综合、仿真,并对其仿真波形作出分析说明。
三.实验过程
1.新建一个文件夹,取名CNT10。
2.输入源程序。
3.文件存盘,文件名为cnt10,扩展名为.vhd。
4.创建工程,按照老师要求对软件进行设置。
5.进行失序仿真,得到仿真图形。
四.实验程序
任务1:
entityCNT10IS
port(a,b,s:
inbit;
y:
outbit);
endentityCNT10;
architectureoneofCNT10is
begin
process(a,b,s)
ifs='0'theny<=a;elsey<=b;
endif;
endprocess;
endarchitectureone;
任务2:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUXKIS
PORT(s0,s1:
inSTD_LOGIC;
a1,a2,a3:
inSTD_LOGIC;
outy:
outSTD_LOGIC);
ENDENTITYMUXK;
ARCHITECTUREdoubleOFMUXKIS
SIGNALtmpout,tmp:
STD_LOGIC;
BEGIN
u1:
PROCESS(s0,a2,a3,tmp)
BEGIN
IFs0='0'thentmp<=a2;
elsetmp<=a3;
ENDIF;
ENDPROCESSu1;
u2:
PROCESS(s1,a1,tmp,tmpout)
BEGIN
IFs1='0'thentmpout<=a1;
elsetmpout<=tmp;
ENDIF;
ENDPROCESSu2;
outy<=tmpout;
ENDARCHITECTUREdouble;
五.实验结果
任务1:
任务2:
六.实验体会
在课堂上对于“EDA与VHDL”这门课的用处及用法一直一知半解,课上对于一些编程也是学的很模糊,因为学习过模拟电路与数字电路,所以总认为器件仿真要用电脑模拟器件或者直接用实物,但是通过本次实验对QuartusⅡ的初步接触,了解了其功能的强大。
通过实验我初步掌握了软件的使用技巧,对下节课的实验打下了很好的基本功。
实验二:
时序电路设计
一.实验目的
熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
二.实验任务
任务1:
设计触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
任务2:
设计锁存器,同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
三.实验过程
a)新建一个文件夹,取名second。
b)输入源程序。
c)文件存盘,文件名为second,扩展名为.vhd。
d)创建工程,按照老师要求对软件进行设置。
e)进行失序仿真,得到仿真图形。
四.实验程序
任务1:
libraryieee;
useieee.std_logic_1164.all;
entitysecondis
port(clk,d:
instd_logic;
q:
outstd_logic);
end;
architecturebhvofsecondis
signalq1:
std_logic;
begin
process(clk,q1)
begin
ifclk'eventandclk='1'
thenq1<=d;
endif;
endprocess;
q<=q1;
endbhv;
任务2:
libraryieee;
useieee.std_logic_1164.all;
entitysuocunis
port(clk,d:
instd_logic;
q:
outstd_logic);
end;
architecturebhvofsuocunis
begin
process(clk,d)
begin
ifclk='1'
thenq<=d;
endif;
endprocess;
end;
五.实验结果
任务1:
任务2:
六.实验体会
本次实验虽然是参照书上的例子,但是由于书上只提供了结构体部分,所以实体部分需要自己来设计。
虽然难度不是很大,但是觉得自己的收获还是非常不小。
本次实验分别设计了锁存器和触发器,唯一的不足就是得到的波形图与书上稍微有些出入,由于自己弄的是时序仿真,所以会有很大的延时。
总之,这次实验的收获还是很大的。
实验三:
加法计数器的设计
一.实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二.实验任务
任务1:
在QuartusⅡ上对加法计数器进行编辑、编译、综合、适配以及仿真。
说明例中各语句作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
任务2:
引脚锁定以及硬件下载测试。
引脚锁定后进行编译、下载和硬件测试实验,将实验过程和实验结果写进实验报告。
三.实验过程
依据以前实验步骤,对加法器进行设计,得出时序仿真图。
四.实验程序
任务1:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjiafais
port(clk,rst,en:
instd_logic;
cq:
outstd_logic_vector(3downto0);
cout:
outstd_logic);
endjiafa;
architecturebehavofjiafais
begin
process(clk,rst,en)
variablecqi:
std_logic_vector(3downto0);
begin
ifrst='1'thencqi:
=(others=>'0');
elsifclk'eventandclk='1'then
ifen='1'then
ifcqi<9thencqi:
=cqi+1;
elsecqi:
=(others=>'0');
endif;
endif;
endif;
ifcqi=9thencout<='1';
elsecout<='0';
endif;
cq<=cqi;
endprocess;
endbehav;
五.实验结果
任务1:
任务2:
六.实验体会
本次实验主要涉及到了硬件仿真的内容,但是实验完成的并不是很顺利,由于机箱的原因,自己并没有亲自进行操作,而是和别人共同完成。
即使如此,我也初步掌握了下载文件的操作,对机箱有了一些认识。
本次实验内容不多,但是涉及范围比较广,所以学到了很多知识点。
实验四:
原理图输入法设计全加器
一.实验目的
熟悉利用QuartusⅡ原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个八位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二.实验任务
任务1:
完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真和实验板上硬件测试,并将此全加器电路设置成一个硬件符号入库。
任务2:
建立一个高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。
三.实验过程
a)打开QuartusⅡ软件,选择File->New命令,并选择BlockDiagram/SchematicFile选项,打开原理图编辑窗口。
b)右击鼠标,选择Insert->Symbol命令,在窗口中点击“…”按钮找到基本单元库路径,然后选择原件,编辑原理图。
c)保存所创建的原理图,文件取名为banjia.bdf。
d)选择File->Create/Update->CreateSymbolFileforCurrentFile命令,将上述得到的文件变成一个元件符号存盘,留着设计全加器调用。
e)在打开一个原理图编辑窗口,调用半加器元件后对全加器进行设计,然后存盘,取名为quanjia.bdf。
f)然后按照以前的步骤创建名为quanjia的工程,并得到时序仿真波形。
g)全加器设计:
设计8位全加器即把一位全加器转变为一个元件符号存盘,然后按照一位全加器设计方法,利用8个一位全加器连接,构成一个8位全加器。
四.实验程序及原理图
任务1:
半加器程序:
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYbanjiaIS
PORT
(
a:
INSTD_LOGIC;
b:
INSTD_LOGIC;
co:
OUTSTD_LOGIC;
so:
OUTSTD_LOGIC
);
ENDbanjia;
ARCHITECTUREbdf_typeOFbanjiaIS
SIGNALSYNTHESIZED_WIRE_0:
STD_LOGIC;
BEGIN
或门程序:
libraryieee;
useieee.std_logic_1164.all;
entityor2ais
port(a,b:
instd_logic;
c:
outstd_logic);
endentityor2a;
architectureoneofor2ais
begin
c<=aorb;
end;
全加器程序(例化):
--Copyright(C)1991-2009AlteraCorporation
--YouruseofAlteraCorporation'sdesigntools,logicfunctions
--andothersoftwareandtools,anditsAMPPpartnerlogic
--functions,andanyoutputfilesfromanyoftheforegoing
--(includingdeviceprogrammingorsimulationfiles),andany
--associateddocumentationorinformationareexpresslysubject
--tothetermsandconditionsoftheAlteraProgramLicense
--SubscriptionAgreement,AlteraMegaCoreFunctionLicense
--Agreement,orotherapplicablelicenseagreement,including,
--withoutlimitation,thatyouruseisforthesolepurposeof
--programminglogicdevicesmanufacturedbyAlteraandsoldby
--Alteraoritsauthorizeddistributors.Pleaserefertothe
--applicableagreementforfurtherdetails.
--PROGRAM"QuartusII"
--VERSION"Version9.0Build18404/29/2009ServicePack1SJFullVersion"
--CREATEDON"FriOct2815:
29:
122011"
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYquanjiaIS
PORT
(
ain:
INSTD_LOGIC;
bin:
INSTD_LOGIC;
cin:
INSTD_LOGIC;
cout:
OUTSTD_LOGIC;
sum:
OUTSTD_LOGIC
);
ENDquanjia;
ARCHITECTUREbdf_typeOFquanjiaIS
COMPONENTbanjia
PORT(a:
INSTD_LOGIC;
b:
INSTD_LOGIC;
so:
OUTSTD_LOGIC;
co:
OUTSTD_LOGIC
);
ENDCOMPONENT;
SIGNALSYNTHESIZED_WIRE_0:
STD_LOGIC;
SIGNALSYNTHESIZED_WIRE_1:
STD_LOGIC;
SIGNALSYNTHESIZED_WIRE_2:
STD_LOGIC;
BEGIN
b2v_inst:
banjia
PORTMAP(a=>ain,
b=>bin,
so=>SYNTHESIZED_WIRE_2,
co=>SYNTHESIZED_WIRE_0);
b2v_inst1:
banjia
PORTMAP(a=>SYNTHESIZED_WIRE_0,
b=>cin,
so=>SYNTHESIZED_WIRE_1,
co=>sum);
cout<=SYNTHESIZED_WIRE_1ORSYNTHESIZED_WIRE_2;
ENDbdf_type;
半加器原理图:
元件符号存盘:
全加器原理图:
元件符号存盘:
8位全加器原理图:
五.实验结果
任务1:
任务2:
六.实验体会
本次实验内容比较多,也比较复杂,一开始并不是很清楚该怎么做,也犯过很多错误,最后经过多次问老师,在老师的指导下,明白了一些脉络。
由于对8位全加器的设计很陌生,所以在网上查了许多资料,通过一点一点学习,掌握了一些基本原理。
虽然这次实验用了很长时间,并且效果也并不怎么好,但是总体来说,收获还是很多的。
总体收获
通过以上四次实验,不但增强了我的动手能力,对EDA的编程熟练了许多,更主要的是建立了我对这门课程的兴趣,非常有助于我在今后对于专业课的强化学习。
感谢这次实验,真的让我收获很多,给了我自信。