EDA技术课程设计报告

合集下载

eda课程设计5篇[修改版]

eda课程设计5篇[修改版]

第一篇:eda课程设计数字钟一、设计要求设计一个数字钟,具体要求如下:1、具有时、分、秒计数显示功能,以24小时循环计时。

2、具有清零、校时、校分功能。

3、具有整点蜂鸣器报时以及LED花样显示功能。

二、设计方案根据设计要求,数字钟的结构如图8-3所示,包括:时hour、分minute、秒second计数模块,显示控制模块sel_clock,七段译码模块deled,报时模块alert。

三、VHDL程序library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; useIEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;--use UNISIM.VComponents.all;entityddz is port(rst,clk: in std_logic; hour_h: out std_logic_vector( 6 downto 0); hour_l: outstd_logic_vector( 6 downto 0); min_h: out std_logic_vector( 6 downto 0);min_l: out std_logic_vector( 6 downto 0);sec_h: out std_logic_vector( 6 downto 0);sec_l: out std_logic_vector( 6 downto 0)); endddz;architecture Behavioral of ddz is signalcnt: std_logic_vector(15 downto 0); signalsec_h_in: std_logic_vector( 3 downto 0); signalsec_l_in: std_logic_vector( 3 downto 0); signalmin_h_in: std_logic_vector( 3 downto 0); signalmin_l_in: std_logic_vector( 3 downto 0); signalhour_h_in: std_logic_vector(3 downto 0); signalhour_l_in: std_logic_vector(3 downto 0);signalclk_s,clk_m,clk_h: std_logic; begin process(rst,clk) begin if rst='0' then sec_h_in'0');sec_l_in'0');clk_msec_l_inifsec_h_in=5 thensec_h_inclk_melsesec_h_inclk_mend if; else sec_l_inclk_mend if; end if; end process;process(rst,clk_m) begin if rst='0' then-- min_h_in'0');min_l_in'0'); -- clk_hmin_l_inmin_h_inclk_mend if; else min_l_inend if; end if; end process;process(rst,clk_n) begin if rst='0' then-- hour_h_in'0');hour_l_in'0'); -- clk_hhour_l_inhour_h_inclk_nend if; else hour_l_inend if; end if; end process;process(sec_l_in) begin casesec_l_in iswhen "0000" =>sec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lprocess(sec_h_in) begin casesec_h_in iswhen "0000" =>sec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hprocess(min_l_in) begin casemin_l_in iswhen "0000" =>min_lmin_lmin_lwhen "0011" =>min_lmin_lmin_lmin_lmin_lmin_lmin_lmin_lprocess(min_h_in) begin casemin_h_in iswhen "0000" =>min_hmin _h min _hmin _hmin _h min _hmin _hmin _hmin _hmin _hmin _hend case; end process;process(hour_l_in) begin casehour_l_in iswhen "0000" =>hour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lprocess(hour_h_in) begin casehour_h_in iswhen "0000" =>hour_hhour_hhour_hhour_h hour _h hour _h hour _h hour _h hour _hhour_h hour _h四、VHDL仿真结果五、课程设计心得通过这次课程设计,有效得巩固了课本所学的知识,而且通过上机仿真不断发现问题并及时改正,加深了我们对该课程设计的印象。

EDA课程实验设计报告

EDA课程实验设计报告

《EDA课程实验设计报告》洗衣机自动控制器设计一实验要求:1、由一个按键控制洗衣机的启动、暂停。

2、洗衣机洗涤一定时间后,能自动停止,由一个LED灯闪烁提示,并发出报警提示。

3、洗涤时间能用数码管显示,暂停时时间停止,暂停后时间在停止的时间基础上继续计时。

4、用至少四个LED指示灯的流动表示洗衣机的正转和反转。

即当正转20秒时,四个指示灯从右向左循环移动;反转20秒时,四个指示灯从右向左循环移动。

5、暂停10秒时,四个指示灯闪烁来表示电机停止转动。

二.设计总体思路,基本原理1.设计总体思路从课程设计要求来看,要求实现电机的正传、反转、暂停,用四个LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,如此一来,周期恰好是60秒,理所当然的分钟计数器、秒计数器是一定要有的。

接下来脉冲是一定的了,但是有分钟计数器和秒钟计数器还要考虑是不是要60分频器,就我们所学过的来说实现循环有移位寄存器;还有个问题,当洗涤时间到了,报警还要一个报警电路,根据要求,报警的蜂鸣器不可以长时间的叫,要有个合理的时间,我们可以用一个单稳态电路来实现。

方案为:直接从数值上进行提取信号来控制一个可以实现循环的74LS194来实现。

2.基本原理首先,从秒脉冲出来的信号,经过一个控制电路后进入秒计数器进行秒计数,进行清零,这时用户置入洗涤时间,并按开始按钮,洗衣机开始工作。

当秒计数器变为零的时候,去分钟计数器上面借数;与此同时,从十秒位转化出来的信号进入移位寄存器后,LED灯表示出电机运转状态;当用户设定的洗涤时间结束后,电路报警并清零。

三.单元电路设计1.一百进制分计数器和六十秒计数器的设计(1)分、秒计数器的设计分、秒计数器我们都用74192片,74192上升沿触发,由UP,DOWN两管脚控制加减计数,有异步置数端LOAR和异步复位端CLR,BO’和CO’分别输出高电平表示加进位和减进位。

由于74192没有保持脚,故需要外围电路实现保持功能。

EDA-课程设计报告书

EDA-课程设计报告书

EDA-课程设计报告书《电子设计自动化EDA》课程设计报告书学号:08057102 班级:自动化081 姓名:陈婷指导教师:刘伟目录一、设计思想(一)、设计要求1、具有以24小时制时、分、秒记时、显示功能。

2、具有整点报时功能,整点报时的同时LED花样显示。

3、具有消零,调节小时,分钟功能。

4、设计精度要求为1s。

(二)、系统功能描述1.、系统输入:调时、调分,清零信号,分别用按键开关SETHOUR、SETMIN、RESET控制;计数时钟信号CLK采用2HZ时钟源,扫描时钟信号CLKDSP采用32HZ时钟源或更高;2、系统输出:8位八段共阴极数码管显示输出;LED花样显示输出;3、系统功能详细描述:计时:正常工作状态下,每日按24小时计时制,蜂鸣器无声,逢整点报时。

显示:要求采用扫描显示方式驱动8位8段数码管显示。

整点报时:蜂鸣器在“51”、“53”、“55”、“57”、“59”秒发音,结束时为整点;校时:在计时状态下,按下按键SETMIN设定分钟,按下按键SETHOUR设定小时。

(三)设计思路1、分别写出六进制、十进制、二十四进制、清零、设置时分、LED译码部分,在主体部分用元件例化语句计时,清零设置时分、LED译码,再加上扫描模块2、将六进制、十进制、二十四进制、清零、设置时分、LED译码、扫描模块分模块写在一个主中(四)系统电路结构框图二、设计步骤(一)各种进制的计时及时钟控制模块程序1、6进制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter6 isport( clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout: out std_logic_vector(3 downto 0);co: out std_logic);end counter6;architecture art2 of counter6 issignal count:std_logic_vector(3 downto 0);beginprocess(clk)beginif (clk'event and clk='1')thenif(reset='0')then count<="0000";elsif(set='1')then count<=ain;elsif (count="0101")thencount<="0000";co<='1';else count<=count+1;co<='0';end if;end if;end process;aout<=count;end art2;2、10进制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(clk,reset,set: in std_logic;ain:std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0); co:out std_logic);end counter10;architecture art1 of counter10 issignal count:std_logic_vector(3 downto 0);beginprocess(clk)beginif(clk'event and clk='1') thenif(reset='0')then count<="0000";elsif(set='1')then count<=ain;elsif(count="1001") thencount<="0000";co<='1';else count<=count+1;co<='0';end if;end if;end process;aout<=count;end art1;3、24进制ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter24 isport( clk,reset,set: in std_logic;ainh:in std_logic_vector(3 downto 0);ainl:in std_logic_vector(3 downto 0);aout: out std_logic_vector(7 downto 0)); end counter24;architecture art3 of counter24 issignal count:std_logic_vector(7 downto 0); beginprocess(clk)beginif(clk'event and clk='1') thenif(reset='0')then count<="00000000";elsif(set='1')then count(7 downto 4)<=ainh;count(3 downto 0)<=ainl;elsif(count(7 downto 4)<"0011" ) thenif(count(7 downto 4)="0010" and count(3 downto 0)="0011") thencount<="00000000";elsif(count(3 downto 0)="1001") thencount(3 downto 0)<="0000";count(7 downto 4)<=count(7 downto 4)+1;else count(3 downto 0)<=count(3 downto 0)+1;end if;end if;end if;--end if;end process;aout<=count;end art3;(二)系统整体程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk,b1,clks: in std_logic;reset: in std_logic;setmin,sethour: in std_logic;minutell,minutehh,hourll,hourhh,b2:instd_logic_vector(3 downto 0);secondl,secondh:out std_logic_vector(3 downto 0);--second0,second2:out std_logic_vector(6 downto 0);minutel,minuteh:out std_logic_vector(3 downto 0);--minute0,minute2:out std_logic_vector(6 downto 0);hourl,hourh:out std_logic_vector(3 downto 0); --hour0,hour2,dout:out std_logic_vector(6 downto 0);dout:out std_logic_vector(6 downto 0);s:out std_logic_vector(2 downto 0); singing,light: out std_logic);end clock;architecture art of clock iscomponent counter10 isport(clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0);co:out std_logic);end component;component counter6 isport(clk,reset,set: in std_logic;ain:in std_logic_vector(3 downto 0);aout:out std_logic_vector(3 downto 0);co:out std_logic);end component;component counter24 isport(clk,reset,set: in std_logic;ainh,ainl:std_logic_vector(3 downto 0);aout:out std_logic_vector(7 downto 0));end component;component led7 isport(ain: in std_logic_vector(3 downto 0);aout:out std_logic_vector(6 downto 0));end component;signal cs0,cs1,cm0,cm1:std_logic;signals0,s1,m0,m1,h0,h1,cout:std_logic_vector(3 downto 0);signal h:std_logic_vector(7 downto 0);signal count:std_logic_vector(2 downto 0);beginh0<=h(3 downto 0);h1<=h(7 downto 4);u1:counter10 port map(clk=>clk,reset=>reset,set=>b1,ain=>b2,aou t=>s0,co=>cs0);u2:counter6 port map(clk=>cs0,reset=>reset,set=>b1,ain=>b2,aout=>s1,co=>cs1);u3:counter10portmap(clk=>cs1,reset=>reset,set=>setmin,ain=>mi nutell,aout=>m0,co=>cm0);u4:counter6portmap(clk=>cm0,reset=>reset,set=>setmin,ain=> minutehh,aout=>m1,co=>cm1);u5:counter24portmap(clk=>cm1,reset=>reset,set=>sethour,ainl=> hourll,ainh=>hourhh,aout=>h);u6:led7 port map(ain=>cout,aout=>dout);secondl<=s0;secondh<=s1;minutel<=m0;minute h<=m1;hourl<=h0;hourh<=h1;process(m1,m0,s1,s0)beginif(m1="0101" and m0="1001" and s1="0101" and s0="1001") thensinging<='1';light<='1';else singing<='0';light<='0';end if;end process;process(clks)beginif(clks'event and clks='1') thenif (count="101") thencount<="000";else count<=count+1;end if;s<=count;CASE count ISwhen"000"=> cout<=s0;when"001"=> cout<=s1;when"010"=>cout<=m0;s<="010";when"011"=> cout<=m1 ;when"100"=> cout<=h0;when"101"=> cout<=h1;when others=> cout<="0000";end case;end if;end process;end art;三、调试过程(一)仿真波形1、6进制程序仿真波形2、10进制程仿真波形3、24进制程序仿真波形4、系统程序仿真波形(二)分析问题1:u6:led7 port map(ain=>secondl,aout=>second0);u7:led7 port map(ain=>secondh,aout=>second1);u8:led7 port map(ain=>minutel,aout=>minute0);u9:led7 port map(ain=>minuteh,aout=>minute1);u10:led7 port map(ain=>hourl,aout=>hour0);u11:led7 port map(ain=>hourh,aout=>hour1);问题分析:元件例化是并行语句,按此段代码LDE并行显示,每一个数码管都需要八个端口,这样就需要八排插口,而试验箱只有一排端口。

EDA课程设计报告

EDA课程设计报告

课程设计报告(理工类)课程名称: EDA技术专业班级:电子信息工程101 学生学号:学生姓名:所属院部:指导教师:20 11 ——20 12 学年第 2 学期设计项目名称:数字秒表设计实验地点:同组学生姓名:设计成绩:批改教师:批改时间:1.课程设计目的2.课程设计的基本要求3.课程设计类型二、仪器和设备三、设计过程1.设计内容和要求2.设计方法和开发步骤3.设计思路4.设计难点四、设计结果与分析1.思路问题以及测试结果失败分析2.程序简要说明1.课程设计目的1)根据设计要求,完成对数字秒表的设计。

2)进一步加强对MaxplusⅡ软件的应用和对VHDL语言的使用。

2.课程设计的基本要求1)提供的时钟信号频率为100Hz,实现计数从0.01s到0.1s,再到1s,10s,1min,10min,1h。

3.课程设计类型1)综合应用设计二、仪器和设备1.计算机,1台三、设计过程1.设计内容和要求1)用MaxplusⅡ软件编程实现六进制计数器、十进制计数器、分频器(3MHz——100MHz)模块。

2)编译各个模块,连接各模块,最终实现一小时的秒表计数功能。

2.设计方法和开发步骤1)编程实现十进制计数器十进制计数器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk: in std_logic;clr: in std_logic;ena: in std_logic;cq: out integer range 0 to 15;carry_out: out std_logic);end entity cnt10;architecture art of cnt10 issignal cqi: integer range 0 to 15; beginprocess(clk,clr,ena)isbeginif clr='1'then cqi<=0;elsif clk'event and clk='1'then if ena='1'thenif cqi<9 then cqi<=cqi+1; else cqi<=0;end if;end if;end if;end process;process(cqi)isbeginif cqi=9 then carry_out<='1';else carry_out<='0';end if;end process;cq<=cqi;end architecture art;2)编程实现六进制计数器六进制计数器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk: in std_logic;clr: in std_logic;ena: in std_logic;cq: out std_logic_vector(3 downto 0);carry_out: out std_logic);end entity cnt6;architecture art of cnt6 issignal cqi: std_logic_vector(3 downto 0);beginprocess(clk,clr,ena)isbeginif clr='1'then cqi<="0000";elsif clk'event and clk='1'thenif ena='1'thenif cqi="0101"then cqi<="0000";else cqi<=cqi+'1';end if;end if;end if;end process;process(cqi)isbeginif cqi="0000"then carry_out<='1';else carry_out<='0';end if;end process;cq<=cqi;end architecture art;3)编程实现分频器模块分频器源代码(3MHz—100Hz)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clkgen isport(clk: in std_logic;newclk: out std_logic);end entity clkgen;architecture art of clkgen issignal cnter:integer range 0 to 10#29999#; beginprocess(clk) isbeginif clk'event and clk='1' thenif cnter=29999 then cnter<=0;else cnter<=cnter+1;end if;end if;end process;process(cnter) isbeginif cnter=29999 then newclk<='1';else newclk<='0';end if;end process;end architecture art;3.设计思路因为实验硬件仿真提供3MHz的时钟信号,所以要用分频器实现3MHz 到100Hz的时钟信号的转换。

EDA课程设计报告

EDA课程设计报告

EDA课程设计报告•相关推荐EDA课程设计报告在我们平凡的日常里,报告的使用成为日常生活的常态,报告中涉及到专业性术语要解释清楚。

那么报告应该怎么写才合适呢?以下是小编为大家整理的EDA课程设计报告,希望对大家有所帮助。

EDA课程设计报告1实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台的使用。

(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。

(4)了解掌握单片机芯片的烧写方法与步骤。

(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。

(6)掌握利用protel 99 se绘制电路原理图及pcb图。

(7)了解pcb板的制作腐蚀过程。

二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。

(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。

(6)制板。

首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净。

(7)焊接。

将所给元器件根据原理图一一焊至pcb板相应位置。

(8)调试。

先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。

EDA课设设计报告

EDA课设设计报告

目录1、概述 (4)2、设计要求 (4)3、设计内容 (5)4、方案设计与原理分析 (6)5、锁存译码设计 (9)6、报警信号发生器 (16)7、密码锁控制电路仿真结果及下载分析(18)8、心得体会 (22)电子技术综合任务书姓名学号学院班级题目简易14位数字密码锁控制电路设计设计任务1、基本要求(1)、14位数字密码分成高7位(DH6….D H0)和低7位(DL6….D L0),用数字逻辑开关预置,输出信号out为1表示开锁,否则关闭。

;(2)、14位数字密码分时操作,先预置高7位,然后再置入低7位,(3)要求电路工作可靠,保密性强,开锁出错立即报警,(4)、利用MAXPLUS2软件进行设计、编译、并在FPGA芯片上实现;(5)、14位密码自己设定。

时间进度总体时间为1周;星期一上午:讲解;星期一下午:理解电路原理;星期二下午:编辑源程序设计电路;星期四下午:验收电路图,检验程序是否正确;星期五之前:上交课程设计报告;主要参考文献【1】刘爱荣、王振成。

EDA技术与CPLD︱FPGA开发应用简明教程。

北京:清华大学出版社;【2】刘吕华。

数字逻辑EDA设计与实践。

北京:国防工业出版1、概述现在EDA技术应用广泛,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA 技术已在各大公司、科研和教学部门广泛使用。

在产品设计与制造方面,EDA 技术可实现前期的计算机仿真、系统级模拟及测试环境的仿真、PCB的制作、电路板的焊接、ASIC的设计等。

EDA是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。

它是为解决自动控制系统设计而提出的,从七十年代经历了计算机辅助设计CAD,计算机辅助工程CAE,电子系统设计自动化ESDA三个阶段。

前两个阶段的EDA产品都只是个别或部分的解决了电子产品设计中的工程问题;第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提供了并行设计环境概念,提供了独立与工艺和厂家的系统级的设计工具。

eda课程设计报告

eda课程设计报告

eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。

2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。

3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。

技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。

2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。

3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。

情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。

2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。

3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。

课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。

学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。

教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。

通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。

后续教学设计和评估将以此为基础,关注学生的学习成果。

二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。

2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。

3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。

电子行业EDA课程设计报告

电子行业EDA课程设计报告

电子行业EDA课程设计报告1. 引言本文档是电子行业EDA课程的设计报告,旨在介绍课程的设计目标、内容、实施过程以及所取得的成果。

EDA(Electronics Design Automation)是指电子设计自动化,是电子行业中一种重要的设计和开发方法。

本课程旨在培养学生掌握EDA的基本概念、流程和工具,从而提高他们在电子行业中的设计能力和竞争力。

2. 设计目标本课程的设计目标如下:1.培养学生掌握EDA的基本概念和原理。

2.培养学生熟练掌握EDA工具的使用和应用。

3.培养学生具备独立进行EDA项目设计和开发的能力。

4.提高学生的团队合作和沟通能力。

3. 课程内容本课程的内容主要包括以下几个方面:3.1 EDA基础知识在本节课程中,学生将学习EDA的基本概念和原理,包括电子设计流程、硬件描述语言、电路仿真和验证等方面的知识。

3.2 EDA工具的使用本节课程将介绍常用的EDA工具,包括电路设计工具、电路仿真工具和电路布局工具等。

学生将学习如何使用这些工具进行电路设计、仿真和验证。

3.3 EDA项目设计与开发在本节课程中,学生将进行一个EDA项目的设计与开发实践。

学生将根据给定的项目需求,使用所学的EDA工具进行电路设计、仿真和验证,并最终提交一个完整的EDA项目报告。

3.4 团队合作与项目管理本节课程将讲解团队合作和项目管理的基本原理和方法,包括任务分配、进度管理和沟通协作等方面的内容。

学生将通过分组合作,在完成EDA项目的过程中提高团队合作和沟通能力。

4. 实施过程本课程的实施过程主要包括以下几个阶段:4.1 阶段一:知识讲解在此阶段,教师将讲解EDA的基本概念、流程和工具使用方法。

学生将通过课堂听讲和课后阅读相关资料,对EDA的基础知识进行学习和理解。

4.2 阶段二:工具练习在此阶段,学生将通过实际操作,熟悉常用的EDA工具的使用方法。

教师将提供实验环境和相关实验指导,学生将利用课余时间进行工具的练习和实践。

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

贵州大学EDA技术课程设计报告题目:BCD码加法器院系计算机科学与技术学院专业计科121学号**********、**********、********** 学生姓名张飞宇、王红强、匡金军指导教师夏玉勤设计BCD码加法器一、设计任务及要求(1)课程设计意义:对BCD码加法有了进一步了解;学习了quartus II设计软件,初步了解了FPGA;(2)设计要求:利用Verilog HDL语言,编写一个4位BCD码加法器程序,输入用八个开关分别表示两个BCD码,输出结果用数码管显示。

主要芯片:2个全加器(4008BD)、开关、数码管(2个),其他元件、门电路任选(3)主要功能:输入两个4位BCD码,相加结果显示在数码管上。

我组在要求的功能上添加了一些代码,使输入结果也能在数码管上显示。

(4)设计思路:图1 简易结构图如图1所示:A,B分别是2个输入数字,S0-S1为输出,经过BCD 加法器的运算,能实现BCD码加法功能。

(1)T=A+B,若T>10,则Z赋值为10,同时进位(2)C=1,和值低位(3)S0=T-Z,和值高位(4)S1=C。

二、基于Verilog语言的电路设计、仿真、综合硬件及软件电路设计及描述图2 顶层模块图图3 RTL(1)数据的产生与输入通过J1~J8八个单刀双掷开关在+5V和GND之间的切换来产生两个4位8421BCD码作为输入的数据,当开关打到+5V时输入数据1,打到GND时输入数据0。

其中J1~J4分别为数据A3~A0,J5~J8分别为数据B3~B0,且A3~A0、B3~B0的位权依次降低(8421)。

(2)加法电路把上面得到的两个四位8421BCD码分别输入4008BD全加器的输入端A3~A0、B3~B0,同时CIN输入端接低电平。

则S3~S0输出计算结果,COUT为进位输出端。

(3)转换电路为将输出结果显示在数码管上,需要将计算结果进行转换,转换电路的原理如表 2.1所示当结果小于9时,转换为十进制时只有一位,所以无需转换可以直接输入显示译码器后通过数码管显示出。

当运算结果大于9时,转化为十进制数为两位要进位,因此必须通过转换电路来实现数值转换,即将得到的结果做如表1.3所示的转换。

考虑到全加器要到16才能进位,而显示时则要求到十句进位,所以要在通过一个4008全加器将计算结果加上六,使其在结果为10时就开始进位,又因为计算结果小于9时不能加六,所以通过一个四位数值比较器74HC85AD将计算结果与事先设定的数9进行比较,当结果大于九时则给第二片全加器的A3~A0输入数据6,当计算结果不大于9时则给第二片全加器的A3~A0输入数据0,即不做变化。

(4)显示电路在数字测量仪表和各种数字系统中,都需要将数字量直观地显示出来,数字显示电路通常由译码驱动器和显示器等部分组成。

数码显示器就是用来显示数字、文字或符号的器件。

普遍使用的七段数字显示器发光二极管器件有发光二极管和液晶显示器。

发光二极管构成的七段显示器有两种,共阴极和共阳极电路。

共阴极电路中,七个发光二极管的阴极连在一起接低电平,需要某一段发光,就将相应二极管的阳极接高电平。

共阳极显示器的驱动则刚好相反。

为了使数码管能显示十进制数,必须将十进制数的代码经译码器译出,然后经驱动器点亮对应的段。

例如,对于8421BCD码的0011状态,对应于十进制数为3,则译码驱动应使a、b、c、d、g各段点亮。

译码器的功能就是,对应于某一组数码输入,相应的几个输出端有有效信号输出。

测试实验结果:通过调节开关输入数据0110与0011,按下F5,则数码管显示出计算09(不进位);再次调节开关输入数据1000与1001,数码管显示计算结果17(进位);然后随机输入0001与0010,数码管显示计算结果为3。

如下图4所示:图4 功能仿真图源程序代码:1.BCD加法器module BCDadder(A,B,S0,S1,clear); //定义输入模块input [3:0]A; //考虑到A、B的值可能//超过十进制数8,顾定义长度为4位;input [3:0]B;input clear; //clear为复位信号output S0;output S1;reg [3:0]S0;reg [3:0]S1;reg [4:0]C;reg [4:0]T; //T为临时参数,C为进位,低位和值可能超过16,所以定义T长度为5;reg [4:0]Z;always @(posedge clear) //以每一次复位上升沿到来开始计算和值;beginT=A+B; //低位相加和值赋T;if(T>9)beginZ=10; //如果低位相加有进位,则赋值Z=10;C=1; //如果T>9,则有进位,此时C=1;endelsebeginZ=0;C=0;endbeginS0=T-Z; //和值S0到S1赋值;S1=C;endendendmodule2.输入数A、B显示module indisplay(A,B,displayA,displayB);input [3:0]A;input [3:0]B;output [6:0]displayA;output [6:0]displayB; //定义7段数码管的输出;reg [6:0]displayA;//定义其类型为寄存器类型;reg [6:0]displayB;always@(A or B) //当输入A 、B中任何一位变化,即执行输入显示程序;begincase(A) //输入A显示4'd0:displayA=7'b1000000;4'd1:displayA=7'b1111001;4'd2:displayA=7'b0100100;4'd3:displayA=7'b0110000;4'd4:displayA=7'b0011001;4'd5:displayA=7'b0010010;4'd6:displayA=7'b0000010;4'd7:displayA=7'b1011000;4'd8:displayA=7'b0000000;4'd9:displayA=7'b0010000;default: displayA=7'b1000000; //默认时,数码管显示数字“0”;endcasecase(B) //输入B显示4'd0:displayB=7'b1000000;4'd1:displayB=7'b1111001;4'd2:displayB=7'b0100100;4'd3:displayB=7'b0110000;4'd4:displayB=7'b0011001;4'd5:displayB=7'b0010010;4'd6:displayB=7'b0000010;4'd7:displayB=7'b1011000;4'd8:displayB=7'b0000000;4'd9:displayB=7'b0010000;default:displayB=7'b1000000; //默认时,数码管显示数字“0”;endcaseendendmodule3.输出显示module display(S0,S1,display1,display2);input[3:0] S0;input[3:0] S1;output[6:0] display1;output[6:0] display2;reg[6:0] display1;reg[6:0] display2;always @(S0 or S1 ) //当和值S中的任何一位变化,就开始执行显示程序;begincase(S0) //和值第一位S0显示;4'd0:display1=7'b1000000;4'd1:display1=7'b1111001;4'd2:display1=7'b0100100;4'd3:display1=7'b0110000;4'd4:display1=7'b0011001;4'd5:display1=7'b0010010;4'd6:display1=7'b0000010;4'd7:display1=7'b1011000;4'd8:display1=7'b0000000; //默认时,数码管显示数字“0”;4'd9:display1=7'b0010000;default: display1=7'b1000000; //默认时,数码管显示数字“0”;endcasecase(S1) //和值第二位S1显示;4'd0:display2=7'b1000000;4'd1:display2=7'b1111001;4'd2:display2=7'b0100100;4'd3:display2=7'b0110000;4'd4:display2=7'b0011001;4'd5:display2=7'b0010010;4'd6:display2=7'b0000010;4'd7:display2=7'b1011000;4'd8:display2=7'b0000000;4'd9:display2=7'b0010000;default:display2=7'b1000000; //默认时,数码管显示数字“0”;endcaseendendmodule三、课程设计体会通过本实验,再次熟悉Verilog HDL编程程序,对其中的case 、if else 等语法运用有了更深的了解,掌握了BCD码加法器的逻辑原理,学会如何逐步分析,从而推导出程序顺序。

在编辑程序时,开始时T0、T1的值是利用语法assign来定义,发现这时,T就必须是wire类型数据,但这样T又无法直接做算术运算,后来调整语句,使T的赋值在always语句内出现,此时T则可直接进行算术运算。

在实验时,许多语法细节仍然不完全熟悉,比如“;”的输入常常出错,这个需要加强熟悉。

四、参考文献1.王橙非.电路与数字逻辑设计实践.南京:东南大学出版社,20022.康华光.《电子技术基础数字部分(第五版)》[m].高等教育出版社,2005。

相关文档
最新文档