收藏 分销(赏)

eda技术总实验报告大学论文.doc

上传人:精*** 文档编号:2195606 上传时间:2024-05-22 格式:DOC 页数:65 大小:1.78MB
下载 相关 举报
eda技术总实验报告大学论文.doc_第1页
第1页 / 共65页
eda技术总实验报告大学论文.doc_第2页
第2页 / 共65页
eda技术总实验报告大学论文.doc_第3页
第3页 / 共65页
eda技术总实验报告大学论文.doc_第4页
第4页 / 共65页
eda技术总实验报告大学论文.doc_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、实 验 报 告实验课程: EDA技术 2012年 12月 27日 目 录实验一 一位全加器实验二 模可变计数器实验三 数字时钟实验四 序列发生和检测实验五 交通灯控制 实验六 16*16点阵显示 南昌大学实验报告学生姓名: 邱永洪 学 号: 6100210026 专业班级: 中兴101 实验类型: 验证 综合 设计 创新 实验日期:2012、10、12 实验一 一位二进制全加器设计实验一、 实验目的1、学习Quartus II的文本和原理图输入方法设计简单组合电路以熟悉QuartusII的使用;2、熟悉设备和软件,掌握实验操作。二、 实验内容与要求(1)在利用VHDL编辑程序实现半加器和或门,

2、在主层中进行应用。熟悉层次设计概念;(2)给出此项设计的仿真波形; (3)参照实验板的引脚号,选定和锁定引脚,编程下载,进行硬件测试。三、设计思路1 ,一个1位全加器可以用两个1位半加器及一个或门连接而成。而一个1位半加器可由基本门电路组成。半加器的真值表为absoco0000011010101101其中a为被加数,b为加数,co为本位向高位进位,so为本位和因而可得表达式为: co=ab 而so= ab+ab =ab其VHDL文本如下LIBRARY IEEE; -半加器描述(1):布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS P

3、ORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 2,而全加器的真值表如下;ainbincincountsum0000000101010010111010001101101101011111其中ain为被加数,bin为加数,cin为低位向本位的进位,count为本位向高位的借位,sum为本位和所以,一位全加器

4、的表达式如下: Sum=ainbincin count=ainbin+cinain+cinbin3,或门VHDL文本如下LIBRARY IEEE ; -或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c New,在Device Design Files标签选项框中选择VHDL File。LIBRARY IEEE; -半加器描述(1):布尔方程描述方

5、法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; LIBRARY IEEE ; -或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN

6、 STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c ain,b=bin,co=d,so=e);-例化语句 u2 : h_adder PORT MAP(a=e,b=cin,co=f,so=sum); u3 : or2a PORT MAP(a=d,b=f,c=cout); END ARCHITECTURE fd1;六、VHDL文本输入法设计实验步骤1.新建项目,选择项目文件夹,输入工程名称,添加文件(一般为空),选择芯片型号,选择仿真工具(一般为默认),最后生成项目。2.新建VH

7、DL文件,输入设计语言,保存时要注意与工程文件名相同。如下图: 图(2)文本输入3.保存好后,进行综合编译,如果有错误,折回修改。4、建立波形文件,导入结点,并设置好仿真结束时间,保存文件,进行仿真设置,然后进行波形仿真,如下图: 图(4)六、仿真波形分析.如下图:ain 0 0bin 0 0cin 0 1 其他类似不在一一分析count 0 1sum 0 1 图(5)波形分析经过分析,可知仿真结果与真值表相同ainbincincountsum0000000101010010111010001101101101011111因此,仿真正确。七、硬件测试1.选择菜单Assignment-Assig

8、nment Editor-Pin窗口,选择菜单ViewShow All Known Pin Names,此时编辑器将显示所有的输入输出信号,其中“To”列是信号列,“Location”列是引脚列,“General Function”列显示该引脚的通用功能。对于一个输入输出信号,双击对应的“Location”列,在弹出的下拉列表框内选择需要锁定的引脚号。2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。3.编程下载,用下载线将计算机并口和试验箱上的JTAG口接起来,接通电源。选择ToolsProgrammer菜单,打开programmer窗口。在mode中选中JTAG,将P

9、rogram/Configure下的笑方框选中4在开始编程之前,必须正确设置编程硬件。点击“Hardware Setup”按钮,打开硬件设置口。3)点击 Add Hardware 按钮,出现 Add Hardware 对话框,如图 1-35 所示。图 1-35 编程硬件选择对话框4)在 Add Hardware 对话框中,从 Hardware type 列表中选择所需要硬件类型,如果是 USB 接口的请参照用户使用手册中的 USB 电缆的安装与使用,如果使用的是并口下载线则选取如图 1-35 所示的硬件类型,点击 OK 按钮,完成对硬件类型的设置。回到编程器硬件设置窗口,点击 Close按钮退

10、出设置。则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。5)如果软件已运行一个工程,则在打开编程器的时候,编程器窗口会自动出现这个工程文件要加载到目标器件的文件,如果要加载其它文件可以从其它地方进行添加更改。选好加载文件后,再点选 Progam/Configure,编程模式选取 JTAG 模式,点击 STRAT 进行文件加载,直到加载进度变为 100%,文件成功加 载完成。八、硬件测试结果硬件测试:根据真值表,本次实验中,我的ain bin cin 分别取的是K1.K2.K3而输出count sum取的是LED1和LED2,它们会根据K1.K2.K3的不同而显示亮灭,如输入000

11、,由于输出count sum均为低电平,因此LED1和LED2均灭,输入111由于输入count sum均为高电平,因此LED1和LED2均亮,依据全加器真值表依次验证过后,结果与真值表相符合。试验成功。九、试验心得1、通过本次实验我基本熟悉了QUARTUSII的使用,分别学会了原理图输入法和VHDL文本输入法,同时也学会了波形仿真,波形仿真要观察到程序所要的结果,应该正确设置仿真时间,否则无法全面显示程序要实现的功能。2、在QUARTUSII软件使用方面,还是要注意一些细节问题,如原理图输入与VHDl文本输入保存文件时不能保存在同一个文件夹下,否则在文本文件编译时,会提示半加器元件已存在,导

12、致文件编译无法通过。工程名,vhdl文件名一定要与实体名相同等3、硬件测试方面,要正确添加硬件、正确设置引脚进行引脚锁定,然后一定不要忘记重新全程编译一遍,接下来是下载,有时由于接触不好会下载失败,我把实验箱关掉电源,重新插了下连接线,重新打开后,下载成功。十、参考资料EDA技术实用教程 EDA/SOPC 系统开发平台 南昌大学实验报告学生姓名: 邱永洪 学 号: 6100210026 专业班级: 中兴101班 实验类型: 验证 综合 设计 创新 实验日期: 2012.10. 19 实验二 模可变计数器的设计一、实验目的1、学习设计脉冲分频程序的设计,掌握分频的作用。2、学会利用控制位M来控制

13、计数器的模值。二、实验内容与要求1、计设置一位控制模的位M,要求M=0,模23计数;当M=1,模109计数;2、计数结果用三位数码管显示,显示BCD码;3、利用Quartus软件实现波形仿真;4、应用实验箱验证此计数器的功能。三、实验思路1、要求分别实现模23和模109的计数,因些我分别用GW、SW、 BW 代表个位,十位和百位。还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位;当M为1时实现模109计数,用GW、SW、 BW 分别为个位,十位和百位计数。2、由于要求用三个数码管显示,由于每次只能只能选中一个数码管显示管,因此我使用了数码管的动态扫描来实现视觉上

14、多个数码管显示管同时显示的效果,这个步骤中分频计的作用很重要。我使用了一个可变的R作为分频计的初值。3、计数时分两种情况1)、当M为0时,实现模23计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;计数到22时当下一个时钟上升沿到来时就清0重计。2)、当M为1时,实现模109计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;当个位和十位均为9时,就向百位进位,同时个位和十位自身清0;计数到108时当下一个时钟上升沿到来时就清0重计。四、实验程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_

15、LOGIC_UNSIGNED.ALL;ENTITY count ISPORT(CLK,M,EN,RST:IN STD_LOGIC; R:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -分频计数初值 sel0,sel1,sel2:buffer STD_LOGIC; SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -数码管八段 CLK1:buffer STD_LOGIC; GW,SW,BW: buffer STD_LOGIC_VECTOR(3 DOWNTO 0);-计数器的个,十,百位 COUT:OUT STD_LOGIC;-溢出信号 SEL:OUT

16、STD_LOGIC_VECTOR(7 DOWNTO 0) -位选信号 ); END count;ARCHITECTURE behav OF count ISSIGNAL CNT,X : STD_LOGIC_VECTOR(7 DOWNTO 0); -数码管分频计数 SIGNAL J : STD_LOGIC_VECTOR(11 DOWNTO 0); -12位BCD计数值 SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0); -数码管选择 SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); -数码管显示值 SIGNAL MODEL : S

17、TD_LOGIC_VECTOR(11 DOWNTO 0); -模长信号BEGINP1:PROCESS(CLK,R) -进程P1分出的频率用来数码管的位 BEGIN X=R; IF CLKEVENT AND CLK = 1 THEN CNT=CNT+1; IF CNT=X-1 THEN CLK1=1;CNT=00000000;-R分频:R是一个八位的二进制数 ELSE CLK1MODELMODEL=000100001000;-109END CASE; GW=J(3 downto 0); SW=J(7 downto 4); BW=J(11 downto 8); IF RST=1 THEN J0);

18、 ELSIF CLK1EVENT AND CLK1=1 THEN IF EN=1 THEN IF JMODEL THEN IF GW=9 THEN -个位为9时加7调整 J=J+7; IF SW=9 THEN -十位为9时加103调整 J=J+103; END IF; ELSE J=J+1; END IF; ELSE J0); END IF; END IF; END IF;END PROCESS;P3:PROCESS( CLK) -数码管控制 BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT8010 THEN CNT8 =CNT8+1; ELSE CNT80);

19、END IF; END IF;SEL(0)=sel0 ;SEL(1)=sel1 ;SEL(2) sel2=0;sel1=1;sel0=0;A sel2=0;sel1=0;sel0=1;A sel2=0;sel1=0;sel0=0;ANULL; END CASE; END PROCESS ; P4:PROCESS(A) -七段译码程序BEGIN CASE A IS WHEN 0000 =SGSGSGSGSGSGSGSGSGSGNULL;END CASE;END PROCESS; COUT device-引脚锁定,参照下载实验板1K100的引脚号说明书,选择适当的引脚2.引脚锁定后,保存,必须重新

20、进行一次全程编译,编译通过后才能编程下载。3、编程下载,用下载线将计算机并口和试验箱上的JTAG口接起来,接通电源。选择ToolsProgrammer菜单,打开programmer窗口。在mode中选中JTAG,将Program/Configure下的笑方框选中4在开始编程之前,必须正确设置编程硬件。点击“Hardware Setup”按钮,打开硬件设置口。点击“Add Hardware”打开硬件添加窗口,在“Hardware type”下拉框中选择“ByteBlasterMV or ByteBlaster II”,“Port”下拉框中选择“LPT1”,点击OK按钮确认,关闭Hardware

21、Setup窗口,完成硬件设置。5、点击“Start”按钮,开始编程下载 图(14)下载成功七、硬件测试结果下载成功后,开始在实验箱上检验结果,我设置的CLK=1KHz (1)clk为时钟信号,由时钟信号的上升沿触发计数 (2)m为模值输入端,当其变化时,计数容量相应发生变化; (3)rest为清零控制端,当其为高电平时清零; (4)en为使能控制端,当其为高电平时正常计数,当其为低电平时暂停计数;(5)、当按下S3时,使M=0数码管计数到22后开始清0,实现了模23计数;再次按下S3,M为1时,数码管计数到108后,开始清0,实现了模109计数。而且当数码管计数到45,我把电平2置为低电平,即

22、M为0时,个位,十位都清0,转向模22计数。因此实验硬件测试结果与程序要实现的功能相符合。(6)、通过八个电平开关K0-K7设置R的初值为R=250;当按下用户按键S3时,使REST产生一个脉冲,实现清零,在数码管上看到全显示0;实验成功。八、试验心得(1)、在建立波形文件时,END TIME设置非常重要,一开始没有设置好,在仿真波形图上看不到个位、十位和百位的计数情况,本实验END TIME=1ms,波形仿真中模23中,CLK为周期100;形仿真中模109中,CLK为周期10。硬件测试时,当CLK脉冲很低时,可以看到动态扫描数码管的扫描情况,八个数码管依次显示。(2)数码管动态显示时,要注意

23、选通位的设置。九、参考资料EDA技术实用教程 潘松 黄继业EDA实验指导书 丁杰 朱启标南昌大学实验报告姓名: 邱永洪 学 号: 6200210026 专业班级: 中兴101班 实验类型:验证 综合 设计 创新 实验日期:2012、11、9 实验三 数字钟设计一、试验规划1.1、实验目的1、.学习数字钟的FPGA设计方法2、 学习分层设计方法; 3、学会动态扫描数码管的使用,及其他硬件设备的使用。4、 了解数字钟的工作原理。5、 进一步熟悉用 VHDL 语言编写驱动七段码管显示的代码。6、 掌握 VHDL 编写中的一些小技巧。1.2设计实验说明:1、数字时钟主要由:分频器、扫描显示译码器、六十

24、进制计数器、二十四进制计数器电路组成。在整个时钟中最关键的是如何获得一个精确的1HZ计时脉冲,2、数字时钟显示由时(24进制)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在八个数码管显示。1.3数字时钟组成及功能:1、分频率器:用来产生1HZ计时脉冲;2、二十四进制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;4、扫描显示译码器:完成对7字段数码管显示的控制;5、报时器:完成到时的提醒;1.4设计内容及步骤:1、根据电路持点,用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;2、软件的元件管理深层含义,以及模块元件

25、之间的连接概念,对于不同目录下的同一设计,如何熔合;3、适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。熟悉了CPLD/FPGA设计的调试过程中手段的多样化;4、按适配划分后的管脚定位,同相关功能块硬件电路接口连线;5、所有模块尽量采用VHDL语言设计。1.5要求:1、精确显示时、分、秒。2、数字时钟要求:具有对时、分、秒置数功能(利用秒脉冲置数、键盘直接置数); 3、能够完成整点报时功能。二、数字时钟设计方案2.1设计方案方框图秒显示时显示分显示整点报时数码管显示FPGA芯片时钟程序使能控制端RESET复位端CLK信号端2.2功能设计1、时钟计数:完成时、分、秒的正

26、确计时并且显示所计的数字;对秒、分60进制计数,即从0到59循环计数,对时24进制计数,即从0到23循环计数。 2、时间设置:手动调节分钟(setfen)、小时(setshi),低电平时有效,可以对分、时进行进位调节,高电平时正常计数。这样可以对所设计的时钟的时间任意调。 3、清零功能:reset为复位端,低电平时实现清零功能,高电平时正常计数。这样可以对所设计的时钟的时间进行清零处理。4、整点报时功能:当分由59进位时,会在整点报时输出端输出高电平,此信号通过LED点亮检验。三、数字时钟计数报时VHDL程序设计仿真与分析3.1秒计数器(miao)设计3.1.1秒计数器(miao)VHDL程序

27、描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miao isport(clk,reset,setfen:in std_logic;enfen:out std_logic;countmiao:out std_logic_vector(7 downto 0);end miao;architecture fun of miao issignal count:std_logic_vector(7 downto 0);signal enfen_1,enfen_2:std_logic;be

28、gincountmiao=count;enfen_2=(not setfen) and clk);enfen=(enfen_1 or enfen_2);process(clk,reset,setfen)beginif(reset=0) thencount=00000000;enfen_1=0;elsif(clkevent and clk=1) thenif(count(3 downto 0)=1001) thenif(count01100000) thenif(count=01011001) thencount=00000000;enfen_1=1;elsecount=count+7;end

29、if;elsecount=00000000;enfen_1=0;end if;elsif(count01100000) thencount=count+1;enfen_1=0;elsecount=00000000;end if;end if;end process;end fun;3.1.2秒计数器(miao)仿真波形图3.1.3秒计数器(miao)仿真分析1、随着clk脉冲信号的不断到来,countmiao记录出clk的脉冲个数,计数到59时,在下一个clk脉冲信号到来时,输出端enfen输出高定平,即向分进位,同时countmiao清零。2、reset为清零端,当reset低电平时,cou

30、ntmiao计数从零重新开始计数。3、setfen为分的手动进位端,当setfen低电平时且clk脉冲到来时,输出enfen高电平,向分进位。3.2分计数器(fen)设计3.2.1分计数器(fen)VHDL程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fen isport(imiao,clk,reset,setshi:in std_logic;enshi:out std_logic;countfen:out std_logic_vector(7 downto 0);end

31、fen;architecture fun of fen issignal enshi_1,enshi_2:std_logic;signal count:std_logic_vector(7 downto 0);begincountfen=count;enshi_2=(not setshi) and clk);enshi=(enshi_1 or enshi_2);process(imiao,reset,setshi)beginif(reset=0) thencount=00000000;elsif(imiaoevent and imiao=1) thenif(count(3 downto 0)=

32、1001) thenif(count16#60#) thenif(count=01011001) thencount=00000000;enshi_1=1;elsecount=count+7;end if;elsecount=00000000;end if;elsif(count01100000) thencount=count+1;enshi_1=0;elsecount=00000000;end if;end if;end process;end fun;3.2.2分计数器(fen)仿真波形图3.2.3分计数器(fen)仿真分析1、imiao为秒计数器的enfen进位输出端,当enfen(i

33、miao)高电平到来时,且clk高电平时,countfen开始计数。countfen计数到59时,下一个enfen(imiao)、clk到来时,enshi高电平,即向时进位,同时countfen清零。2、reset为清零端,当reset低电平时,countfen计数从零重新开始计数。3、setshi为时的手动进位端,当setshi低电平时且clk脉冲到来时,输出enshi时高电平,向时进位。3.3时计数器(shi)设计3.3.1时计数器(shi)vHDL程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shi isport(ifen,reset:in std_logic;countshi:out std_logic_vector(7 downto 0);end shi;architecture fun of shi issignal count:std_logic_vector(7 downto 0);begincountshi=count;process(ifen,reset)beginif(reset=0) thencount=00000000;elsif(ifenevent and ifen=1) theni

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服