




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告实验课程: eda技术 2012年 12月 27日 目 录实验一 一位全加器实验二 模可变计数器实验三 数字时钟实验四 序列发生和检测实验五 交通灯控制 实验六 16*16点阵显示 南昌大学实验报告学生姓名: 邱永洪 学 号: 6100210026 专业班级: 中兴101 实验类型: 验证 综合 设计 创新 实验日期:2012、10、12 实验一 一位二进制全加器设计实验一、 实验目的1、学习quartus ii的文本和原理图输入方法设计简单组合电路以熟悉quartusii的使用;2、熟悉设备和软件,掌握实验操作。二、 实验内容与要求(1)在利用vhdl编辑程序实现半加器和或门,在主层中进行应用。熟悉层次设计概念;(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 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; 2,而全加器的真值表如下;ainbincincountsum0000000101010010111010001101101101011111其中ain为被加数,bin为加数,cin为低位向本位的进位,count为本位向高位的借位,sum为本位和所以,一位全加器的表达式如下: 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):布尔方程描述方法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 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.新建vhdl文件,输入设计语言,保存时要注意与工程文件名相同。如下图: 图(2)文本输入3.保存好后,进行综合编译,如果有错误,折回修改。4、建立波形文件,导入结点,并设置好仿真结束时间,保存文件,进行仿真设置,然后进行波形仿真,如下图: 图(4)六、仿真波形分析.如下图:ain 0 0bin 0 0cin 0 1 其他类似不在一一分析count 0 1sum 0 1 图(5)波形分析经过分析,可知仿真结果与真值表相同ainbincincountsum0000000101010010111010001101101101011111因此,仿真正确。七、硬件测试1.选择菜单assignment-assignment editor-pin窗口,选择菜单viewshow all known pin names,此时编辑器将显示所有的输入输出信号,其中“to”列是信号列,“location”列是引脚列,“general function”列显示该引脚的通用功能。对于一个输入输出信号,双击对应的“location”列,在弹出的下拉列表框内选择需要锁定的引脚号。2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。3.编程下载,用下载线将计算机并口和试验箱上的jtag口接起来,接通电源。选择toolsprogrammer菜单,打开programmer窗口。在mode中选中jtag,将program/configure下的笑方框选中4在开始编程之前,必须正确设置编程硬件。点击“hardware setup”按钮,打开硬件设置口。3)点击 add hardware 按钮,出现 add hardware 对话框,如图 1-35 所示。图 1-35 编程硬件选择对话框4)在 add hardware 对话框中,从 hardware type 列表中选择所需要硬件类型,如果是 usb 接口的请参照用户使用手册中的 usb 电缆的安装与使用,如果使用的是并口下载线则选取如图 1-35 所示的硬件类型,点击 ok 按钮,完成对硬件类型的设置。回到编程器硬件设置窗口,点击 close按钮退出设置。则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。5)如果软件已运行一个工程,则在打开编程器的时候,编程器窗口会自动出现这个工程文件要加载到目标器件的文件,如果要加载其它文件可以从其它地方进行添加更改。选好加载文件后,再点选 progam/configure,编程模式选取 jtag 模式,点击 strat 进行文件加载,直到加载进度变为 100%,文件成功加 载完成。八、硬件测试结果硬件测试:根据真值表,本次实验中,我的ain bin cin 分别取的是k1.k2.k3而输出count sum取的是led1和led2,它们会根据k1.k2.k3的不同而显示亮灭,如输入000 ,由于输出count sum均为低电平,因此led1和led2均灭,输入111由于输入count sum均为高电平,因此led1和led2均亮,依据全加器真值表依次验证过后,结果与真值表相符合。试验成功。九、试验心得1、通过本次实验我基本熟悉了quartusii的使用,分别学会了原理图输入法和vhdl文本输入法,同时也学会了波形仿真,波形仿真要观察到程序所要的结果,应该正确设置仿真时间,否则无法全面显示程序要实现的功能。2、在quartusii软件使用方面,还是要注意一些细节问题,如原理图输入与vhdl文本输入保存文件时不能保存在同一个文件夹下,否则在文本文件编译时,会提示半加器元件已存在,导致文件编译无法通过。工程名,vhdl文件名一定要与实体名相同等3、硬件测试方面,要正确添加硬件、正确设置引脚进行引脚锁定,然后一定不要忘记重新全程编译一遍,接下来是下载,有时由于接触不好会下载失败,我把实验箱关掉电源,重新插了下连接线,重新打开后,下载成功。十、参考资料eda技术实用教程 eda/sopc 系统开发平台 南昌大学实验报告学生姓名: 邱永洪 学 号: 6100210026 专业班级: 中兴101班 实验类型: 验证 综合 设计 创新 实验日期: 2012.10. 19 实验二 模可变计数器的设计一、实验目的1、学习设计脉冲分频程序的设计,掌握分频的作用。2、学会利用控制位m来控制计数器的模值。二、实验内容与要求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、由于要求用三个数码管显示,由于每次只能只能选中一个数码管显示管,因此我使用了数码管的动态扫描来实现视觉上多个数码管显示管同时显示的效果,这个步骤中分频计的作用很重要。我使用了一个可变的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_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 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 : std_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); 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); 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.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。3、编程下载,用下载线将计算机并口和试验箱上的jtag口接起来,接通电源。选择toolsprogrammer菜单,打开programmer窗口。在mode中选中jtag,将program/configure下的笑方框选中4在开始编程之前,必须正确设置编程硬件。点击“hardware setup”按钮,打开硬件设置口。点击“add hardware”打开硬件添加窗口,在“hardware type”下拉框中选择“byteblastermv or byteblaster ii”,“port”下拉框中选择“lpt1”,点击ok按钮确认,关闭hardware 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置为低电平,即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)数码管动态显示时,要注意选通位的设置。九、参考资料eda技术实用教程 潘松 黄继业eda实验指导书 丁杰 朱启标南昌大学实验报告姓名: 邱永洪 学 号: 6200210026 专业班级: 中兴101班 实验类型:验证 综合 设计 创新 实验日期:2012、11、9 实验三 数字钟设计一、试验规划1.1、实验目的1、.学习数字钟的fpga设计方法2、 学习分层设计方法; 3、学会动态扫描数码管的使用,及其他硬件设备的使用。4、 了解数字钟的工作原理。5、 进一步熟悉用 vhdl 语言编写驱动七段码管显示的代码。6、 掌握 vhdl 编写中的一些小技巧。1.2设计实验说明:1、数字时钟主要由:分频器、扫描显示译码器、六十进制计数器、二十四进制计数器电路组成。在整个时钟中最关键的是如何获得一个精确的1hz计时脉冲,2、数字时钟显示由时(24进制)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在八个数码管显示。1.3数字时钟组成及功能:1、分频率器:用来产生1hz计时脉冲;2、二十四进制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;4、扫描显示译码器:完成对7字段数码管显示的控制;5、报时器:完成到时的提醒;1.4设计内容及步骤:1、根据电路持点,用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;2、软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合;3、适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。熟悉了cpld/fpga设计的调试过程中手段的多样化;4、按适配划分后的管脚定位,同相关功能块硬件电路接口连线;5、所有模块尽量采用vhdl语言设计。1.5要求:1、精确显示时、分、秒。2、数字时钟要求:具有对时、分、秒置数功能(利用秒脉冲置数、键盘直接置数); 3、能够完成整点报时功能。二、数字时钟设计方案2.1设计方案方框图秒显示时显示分显示整点报时数码管显示fpga芯片时钟程序使能控制端reset复位端clk信号端2.2功能设计1、时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,即从0到59循环计数,对时24进制计数,即从0到23循环计数。 2、时间设置:手动调节分钟(setfen)、小时(setshi),低电平时有效,可以对分、时进行进位调节,高电平时正常计数。这样可以对所设计的时钟的时间任意调。 3、清零功能:reset为复位端,低电平时实现清零功能,高电平时正常计数。这样可以对所设计的时钟的时间进行清零处理。4、整点报时功能:当分由59进位时,会在整点报时输出端输出高电平,此信号通过led点亮检验。三、数字时钟计数报时vhdl程序设计仿真与分析3.1秒计数器(miao)设计3.1.1秒计数器(miao)vhdl程序描述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;begincountmiao=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 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低电平时,countmiao计数从零重新开始计数。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 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)=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(imiao)高电平到来时,且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) thenif(count(3 downto 0)=1001) thenif(count00100011) thencount=count+7;elsecount=00000000;end if;elsif(count00100011) thencount=count+1;elsecount=00000000;end if;end if;end process;end fun;3.3.2时计数器(shi)仿真波形图3.3.3时计数器(shi)仿真分析1、ifen为分计数器的enshi进位输出端,当enshi(ifen)为高电平时,countshi计数。countshi计数到23时,当下一个enshi(ifen)、clk到来时,countshi会自动清零。2、reset为清零端,当reset低电平时,countfen计数从零重新开始计数。3.4整点报时器(baoshi)设计3.4.1整点报时器(baoshi)vhdl程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshi isport(clk:in std_logic;inputmiao,inputfen:in std_logic_vector(7 downto 0);output:out std_logic);end baoshi;architecture fun of baoshi issignal temp:std_logic;signal nummiao,numfen:std_logic_vector(7 downto 0);beginnummiao=inputmiao;numfen=inputfen;outputtemptemptemptemp=0;end case;end if;end if;end process;end fun;3.4.2整点报时器(baoshi)仿真波形图3.4.3整点报时器(baoshi)仿真分析 input为分计数器的输出端,当输出59和00(十六进制)时,整点报时器(baoshi)的输出端output为高电平,点亮led灯。其他情况时,led灯均不发光。四、数字时钟的驱动与显示设计4.1分频器(fenpin)设计4.1.1分频器(fenpin)原理由于eda实验箱中的脉冲信号源为10khz,要得到需要脉冲可以通过定义count std_logic_vector(13 downto 0),使count在 “00000000000000”和“10011100001111”之间的转换实现。在实验中,时钟脉冲clk为1hz,用于对时钟的记数;扫描显示译码器的脉冲clk,用来驱动8个7段扫描共阴级数码显示管。扫描显示译码器的脉冲,可以通过实验箱中的10khz的脉冲产生。4.1.2分频器(fenpin)vhdl程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk_10k:in std_logic;clk:out std_logic);end fenpin;architecture fun of fenpin issignal count:std_logic_vector(13 downto 0);beginprocess(clk_10k) beginif (clk_10kevent and clk_10k=1) then if(count=10011100001111) then count=00000000000000; clk=1;elsecount= count+1;clk=0;end if;end if;end process; end fun;4.2扫描显示译码器(saomiao)设计4.2.1扫描显示译码器(saomiao)原理扫描显示译码器是用来显示时钟数值的装置,将数字时钟的高低电平信号用数码管的数值显示出来。八个数码管中,用六个数码管显示时、分和秒,另外两个可做为时和分、分和秒之间的间隔,显示-。首先对八个数码管进行扫描,每一时刻都只有一个数码管处于扫描状态,并将此时的数字时钟的高低电平通过十六进制的bcd码转换为数码管显示数值。4.2.2扫描显示译码器(saomiao)vhdl程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity saomiao isport( clk_sm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国酒吧渠道高端饮料销售技巧与供应商选择标准报告
- 2025-2030中国跨境电商供应链优化策略及海外仓布局与合规风险防范研究报告
- 2025-2030中国西南地区特色米酒饮料工业化生产研究
- 2025-2030中国药用辅料质量标准升级对行业影响分析报告
- 2025-2030中国药企研发费用加计扣除政策利用情况报告
- 2025-2030中国自动驾驶道路测试数据与商业化时间表研究报告
- 2025-2030中国脑机接口技术突破与医疗健康应用前景报告
- 2025-2030中国管理咨询行业数据安全与隐私保护解决方案报告
- 第二单元 7 溜 索2023-2024学年九年级下册语文同步教案(统编版)
- 第12节 营养午餐研究(一)-编辑与格式化数据表 教学设计 - 2023-2024学年信息技术湘电子版(2019)七年级下册
- 第三节 区域联系与区域协调发展教学设计高中地理湘教版2019选择性必修2-湘教版2019
- 2025贵州黔西南州普安县县直单位、街道考调事业单位工作人员47人考试参考题库及答案解析
- 百日安全无事故活动方案
- 2025年辽宁沈阳市近海控股集团招聘24人笔试参考题库附带答案详解
- 拼多多公司技能培训
- 写作技巧:三十六种故事创作套路
- 2025-2026学年教科版(2024)小学体育与健康二年级全一册《饮水促健康》教学设计
- 卵巢囊肿教学查房课件
- 教案2025秋形势与政策纪念抗战胜利坚定民族信念抗战胜利80周年
- 水刷石外墙清洗方案
- 【高中班会】高一选科指导课件
评论
0/150
提交评论