实验四 用VHDL设计组合电路教案

时间:2019-05-15 06:54:45下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《实验四 用VHDL设计组合电路教案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《实验四 用VHDL设计组合电路教案》。

第一篇:实验四 用VHDL设计组合电路教案

实验四

用VHDL设计组合电路教案

一、实验目的 熟悉使用VHDL进行简单组合电路的设计; 2 熟悉使用VHDL进行简单层次电路的设计; 熟悉使用VHDL文本输入法设计PLD芯片的流程;

二、实验内容

用VHDL语言完成3—8线译码器设计;

三、实验原理

二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。某三位二进制译码器的真值表及示意图如下:

BIN / OCTA0A1A2SA124&EN01234567SBSC(a)Y0Y1Y2Y3Y4Y5Y6Y7Y7Y6Y5Y4Y3Y2Y1Y074138A2A1A0(b)SASBSC

三、实验步骤及要求

1、请根据以上图原理图,编写一个3—8译码器的VHDL源程序。(只考虑三个输入A2A1A0和8个输出y7y6y5y4y3y2y1y0 ,不考虑它的使能控制输入端)。

2、对DEC3_8.vhd文件编译后,再进行波形仿真,完成输入信号A、Y 输入的设置,启动仿真器Simulator,观察输出波形的情况。

3、锁定引脚、编译并编程下载。参选实验电路模式5和附表一,键

1、键

2、键3为输入信号A0、A1、A2分别锁定在EP1K30/50144-PIN TQFP 目标芯片的输入引脚,输出信号y7、y6、y5、y4、y3、y2、y1、y0分别锁定在目标芯片的输出引脚上。

4、硬件实测3—8线译码器的逻辑功能。按动GW48实验板上的高低电平输入键

1、键

2、键3,得到不同的A0、A1、A2输入组合;观察输出发光二极管Di的亮灭,检查3—8线译码器的设计结果是否正确。

思考题

如果有一个模6计数器采用约翰逊尾变码编码。其顺序为: 000->001-> 011 ->111 ->110 ->100->000 试设计一个由时钟CLK触发,复位控制端RESET=0进行复位操作的模6计数器。

实验报告要求:

写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。

重点内容是分析原理图,写出对应的VHDL代码

对思考题注意加入时钟和复位控制信号,注意其相关语法现象。

参考VHDL源代码 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DEC3_8 IS

PORT(A : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

Y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END DEC3_8;ARCHITECTURE beh OF DEC3_8 IS BEGIN

PROCESS(A)

BEGIN

CASE A IS

WHEN “000” => Y <= “00000001”;

WHEN “001” => Y <= “00000010”;

WHEN “010” => Y <= “00000100”;

WHEN “011” => Y <= “00001000”;

WHEN “100” => Y <= “00010000”;

WHEN “101” => Y <= “00100000”;

WHEN “110” => Y <= “01000000”;

WHEN “111” => Y <= “10000000”;

WHEN OTHERS => NULL;

END CASE;

END PROCESS;END beh;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CNT6 IS

PORT(clk,resset : IN STD_LOGIC;

COUNTOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END CNT6;ARCHITECTURE beh OF CNT6 IS Signal NEXT_COUNT: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN

PROCESS(clk,resset)

BEGIN IF resset='0' THEN NEXT_COUNT <=“000”;Elsif CLK'event and CLK='1' then CASE NEXT_COUNT IS

WHEN “000” => NEXT_COUNT <= “001”;

WHEN “001” => NEXT_COUNT <= “011”;

WHEN “011” => NEXT_COUNT <= “111”;

WHEN “111” => NEXT_COUNT <= “110”;

WHEN “110” => NEXT_COUNT <= “100”;

WHEN “100” => NEXT_COUNT <= “000”;

WHEN OTHERS => NULL;

END CASE;END if;COUNTOUT <= NEXT_COUNT;

END PROCESS;

第二篇:VHDL实验四函数信号发生器设计.

VHDL实验四:函数信号发生器设计

设计要求:设计一个函数信号发生器,能产生方波,三角波,正弦波,阶梯波。设计概述:信号的输出实质上是指电压幅度随时间的变化。根据这个原理我们就可以设计函数信号发生器了。FPGA里面产生的数据只能是数字信号,最终我们通过连接8bit的DA转换器就能将数字信号转换成电压信号,从而实现了信号发生器的功能。

本设计有5个模块组成,其中有:方波发生器,三角波发生器,正弦波发生器,阶梯波发生器,4选1选择器。下面是我设计的整个过程: 方波发生器:实质上是一段时间输出0,一段时间输出255的数字信号,当然这有8位的通道输出。

程序设计如下:--工程名:方波发生器

--功能:产生方波,是通过交替送出全0和全1实现的,每32个时钟翻转一次--时间:2010-12-17 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sqaure is port(clk,clr:in std_logic;

q:out integer range 0 to 255;end entity;architecture behav of sqaure is signal a:bit;begin process(clk,clr--计数分频 variable cnt:integer range 0 to 32;begin if(clr='0' then a<='0';elsif clk'event and clk='1' then if cnt<31 then--进行32分频 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;

end process;process(clk,a--信号输出 begin if clk'event and clk='1' then if a='1' then q<=255;else q<=0;end if;end if;end process;end behav;三角波发生器:实质上是先输出直线递增的数字信号,随后按照同样的斜率输出递减的数字信号。这样就能实现三角波的发生了。

程序设计如下:--工程名:三角波信号发生器

--功能:产生的三角波以64个时钟为一个周期,输出q每次加减8。--时间:2010-12-17 library ieee;

use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity delta1 is port(clk:in std_logic;--时钟信号 rst:in std_logic;--复位信号

q:out std_logic_vector(7 downto 0;--输出信号 end entity;architecture behav of delta1 is begin variable tmp:std_logic_vector(7 downto 0;variable a:std_logic;begin if(rst='0' then tmp:=“00000000”;elsif clk'event and clk='1' then if(a='0' then if(tmp=“11111000” then--tmp=248 tmp:=“11111111”;

a:='1';--信号计数完成,下一次改成递减 else tmp:=tmp+8;--递增 end if;else if tmp=“00000111” then--tmp=7 tmp:=“00000000”;a:='0';--信号计数完成,下一次改成递增 else tmp:=tmp-8;--递减 end if;end if;end if;q<=tmp;--信号输出 end process;end behav;正弦波发生器:这里我设计了64个状态,就是将一个周期的正弦波分成64分,在然后一份份的数字信号输出就可以了。具体怎么取值,用excel计算就可以了。自己手动计算也可以的哦。

具体程序设计如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sin1 is port(clk,clr:in std_logic;d:out integer range 0 to 255;end entity;architecture behav of sin1 is begin variable tmp:integer range 0 to 63;begin if clr='0' then d<=0;elsif clk'event and clk='1' then if tmp=63 then tmp:=0;else

tmp:=tmp+1;end if;case tmp is when 00=>d<=255;when 01=>d<=254;when 02=>d<=252;when 03=>d<=249;when 04=>d<=245;when 05=>d<=239;when 06=>d<=233;when 07=>d<=225;when 08=>d<=217;when 09=>d<=207;when 10=>d<=197;when 11=>d<=186;when 12=>d<=174;when 13=>d<=162;when 14=>d<=150;when 15=>d<=137;when 16=>d<=124;when 17=>d<=112;when 18=>d<=99;when 19=>d<=87;when 20=>d<=75;when 21=>d<=64;when 22=>d<=53;when 23=>d<=43;when 24=>d<=34;when 25=>d<=26;when 26=>d<=19;when 27=>d<=13;when 28=>d<=8;when 29=>d<=4;when 30=>d<=1;when 31=>d<=0;when 32=>d<=0;when 33=>d<=1;when 34=>d<=4;when 35=>d<=8;when 36=>d<=13;when 37=>d<=19;when 38=>d<=26;when 39=>d<=34;when 40=>d<=43;when 41=>d<=53;when 42=>d<=64;when 43=>d<=75;when 44=>d<=87;when 45=>d<=99;when 46=>d<=112;when 47=>d<=124;

when 48=>d<=137;when 49=>d<=150;when 50=>d<=162;when 51=>d<=174;when 52=>d<=186;when 53=>d<=197;when 54=>d<=207;when 55=>d<=217;when 56=>d<=225;when 57=>d<=233;when 58=>d<=239;when 59=>d<=245;when 60=>d<=249;when 61=>d<=252;when 62=>d<=252;when 63=>d<=255;when others=>null;end case;end if;end process;end behav;阶梯波发生器:实质上是一个直线递增的数字信号输出而已,和三角波发生没有什么差别。

--工程名:阶梯波信号发生器

--功能:改变该模块递增的常数,可以改变阶梯的个数--时间:2010-12-17 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;entity ladder1 is port(clk:in std_logic;--时钟信号 rst:in std_logic;--复位信号

q:out std_logic_vector(7 downto 0;--输出信号 end entity;architecture behav of ladder1 is begin process(clk,rst variable tmp:std_logic_vector(7 downto 0;variable a:std_logic;begin if(rst='0' then--复位 tmp:=“00000000”;elsif clk'event and clk='1' then if a='0' then if tmp=“11111111” then tmp:=“00000000”;a:='1';

else tmp:=tmp+16;--以常数递增 a:='1';end if;else a:='0';end if;end if;q<=tmp;--信号输出 end process;end behav;4选1模块

最后我们要将模块进行整合,就需要设计一个选通模块,进行选择。

具体程序设计如下:--工程名:4 选 1 模块选择器--功能:选通模块作用--时间:2010-12-17 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity select4_1 is port(sel:in std_logic_vector(1 downto 0;--选择信号 d0,d1,d2,d3:in std_logic_vector(7 downto 0;--4 个信号发生器通道 q:out std_logic_vector(7 downto 0;--输出通道 end entity;architecture behav of select4_1 is begin process(sel begin case sel is--选择 when“00”=> q<=d0;when“01”=> q<=d1;when“10”=> q<=d2;when“11”=> q<=d3;end case;end process;end behav;最后将所有模块就连接起来进行图形化设计; 进行仿真。最后进行硬件调试,通过 DA 将 8

位的数字信号转化成电压信号就能完成了整个 系统的设计了。总结:通过设计这个简单的数字信号发生器,我彻底的了解了如何设计一个函数 发生器。一直以来都想设计这个一个东西,所以今天终于完成了我一直以来的心 愿了。但是这仅仅是开始,要设计一个很好信号发生器,需要使用 DDS 的技术,因此希望我以后更加再接再厉,慢慢稳健的成长起来。

第三篇:实验组装电路教学设计

《组装电路》教学设计

张劲松

老师:同学们,经过前面几天的焊接训练,想问同学们,你们做好了组装彩色电视机的准备了吗?

学生:我们有信心。

老师:好,今天我们开始来组装康佳彩色电视机。下面请学习委员给每个同学发一块线路板。请大家拿到电路板后,注意看屏幕上的有关要求。

老师:给每个同学展示课件

课件内容:组装前的准备工作,给每个学生发一块空的线路板,并且写上学生自己的名字,由于组装过程需要很长的时间,为防止学生在组装过程中将线路板的敷铜焊点弄氧化,影响后面的焊接质量,为止,将非开关电源部分用报子包装起来;并且,每个学生发一张报子垫在工作台上,以保障清洁。

(一)、组装原则

电视机的组装原则,一般分以下几个方面

1、先小后大。在电路板中一般跳线、功率小于1W的电阻,这些元件的体积小要先装,然后再装体积大的三极管、电解电容、高频头、高压包

2、间隔距离要适合。对于组装元件与电路板的间隔距离,一般跳线、和功率小于1W的电阻、二极管以及立式的电解电容器、插座、集成块都要紧贴线路板,对于大功率电阻一定要与线路板有一定的距离。

3、分部分、分功能。为了装机过程中调试的方便,在元件的组装过程中一般都是按照分部分、分功能。在电视机的主板组装过程中,一般先组装开关电源、行场扫描、中放、伴音、遥控系统。

(二)、组装过程

组装前每个课时布置10个元件的组装任务,每拆1个元件均要求学生进行测量,然后再焊接再新的电路板上;并给学生讲解焊接工艺的基本操作技能,注意焊接时间、焊锡多少的掌握,同时要强调焊接美观(电阻、跳线、电容、二极管、三极管元件脚的高度、统一朝向、平整度)。

学生:老师,什么是分部分、分功能啊?

老师:所谓分部分分功能就是指按照电路所完成的功能进行分块组装。

学生:老师,什么是开关管啊?

老师:所谓开关管就是指电路板中的V901,由于它是工作在开关状态因此而得名,

第四篇:《组合电路的分析与设计》教学设计.

数字逻辑电路

组合逻辑电路的分析与设计

教学设计

1.问题引入

回顾已经学过的门电路、编码器、译码器等逻辑电路,引导学生总结这一类电路的特点,由此引入组合逻辑电路的概念。

2.提出重点难点

重点:组合电路的分析方法与设计方法。难点:组合电路的实际应用。

3.教学内容

组合电路的一般分析方法与步骤 组合电路分析实例

组合电路的一般设计方法与步骤 组合电路设计实例

常用组合集成电路IC简介

4.教学组织

先提问:如果我们在实际中遇到一些逻辑问题,应该如何来用所学的数电知识实现呢? 通过例1,从一个简单的实际逻辑问题入手,和学生一起逐步完成组合逻辑电路的各个设计步骤

例1:某设备有开关A、B、C,要求仅在开关A接通的条件下,开关B才能接通,开关C仅在开关B接通的条件下才能接通。违反这一规程,则发出报警信号,设计一个由与非门组成的能实现这一功能的报警控制电路。

从以上的设计过程中归纳出组合逻辑电路设计的一般方法——四步法

1. 分析要求 2. 列真值表 3. 化简 4. 画逻辑图

通过引导学生对加法器的设计,进一步加深对组合电路设计方法的理解,提高学生利用该方法设计实际电路的能力

介绍一些常用的组合集成电路,可作为资料以便学生了解和查阅 总结四步法是组合逻辑电路设计中的最普遍的方法,应用十分广泛 作业应帮助学生进一步提高对组合逻辑电路分析和设计的能力

5.小结

组合逻辑电路的特点是:任何时刻输出信号仅仅取决于当时的输入信号的取值组合,而与电路原来所处的状态无关。符合这个特点的电路是非常多的,在本章不可能一一列举。重要的是必须掌握组合逻辑电路的分析方法和设计方法。

组合逻辑电路的两种分析方法已在本章

数字逻辑电路

器、多路选择器等组合电路的分析,具体地应用了组合电路的分析方法。

本章

第五篇:数字电路课程设计——用VHDL语言设计交通灯

数字电路课程设计报告

院系: 电气信息工程学院 班级: 08测控2班 学号: 08314237 姓名: 董 亮 合作: 虞 波 指导教师: 翟 丽 芳

2010年12月10日

引言······················································2 一 设计任务和设计要求·········································2 二 电路工作原理及方案设计································3 三 软件设计与调试········································4 1.分频模块的设计及仿真图·································4 2.控制器设计及仿真图····································6 3.计数器的设计及仿真图···································7 4.分位模块的设计·······································9 5.数码管驱动设计·······································10 6. 顶层文件设置·········································14

四 硬件焊接与组装调试···································15 五 心得体会·············································16 六 参考文献·············································16

交通灯控制电路设计

引言:

随着社会的发展以及人类生活水平的提高,基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

如今,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了。为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯。

本程序设计的是交通灯的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,quartusII作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,实现设计目标。

一.设计任务与设计要求

1. 设计任务

设计一个基于FPGA的十字路口交通控制器,假设南北方向和东西方向,两个方向分别设置红灯、绿灯、黄灯三盏灯,设置一组倒计时显示器,用以指挥车辆和行人有序的通行。红灯亮表示直行车辆禁行;绿灯亮表示直行车辆可以通行;黄灯亮表示直行车辆即将禁行;倒计时显示器用来显示允许通行或禁止通行的时间。尽量采用层次化设计。2. 设计要求

在十字路口南北和东西两个方向各设一组红灯、黄灯、绿灯。设一组倒计时显示器。

自动控制:

设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,南北方向为主干道,红灯、黄灯和绿灯显示时间分别是55、5s、50s。东西方向为次干道,红灯、黄灯绿灯显示时间分别为35s、5s、30s。

特殊功能:

(1)紧急状态时,手动拨动紧急开关,主干道以及次干道都显示红灯,禁止通行,并由蜂鸣其报警。

(2)黄灯显示信号为脉冲信号,使得黄灯为“一闪一闪”的显示状态。

二.电路工作原理及方案设计

图1总体设计框图

在VHDL设计描述中,采用自顶向下的设计思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:外部时钟信号clk。LED在自顶向下的VHDL设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。通过上面的分析,不难得知可以把交通灯控制系统划分为4个模块:时钟分频模块,计数模块,控制模块,分位译码模块。

分频电路:输入较高频率脉冲用分频电路的到较

(HOLD=‘1’)发生是,计数器暂停计数。

分位译码电路:因为控制器输出的倒计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数)。七段数码管的译码电路根据控制电路的控制信号,驱动交通灯的显示,通过输入二进制数值,输出信号点亮二极管,我们用的是共阴极数码管,因此译码电路输出逻辑数值‘1’点亮二极管,译码电路输出逻辑数值‘0’熄灭二极管。

三.软件设计与调试

图2模块化设计原理图

1.分频模块的设计及仿真图

分频器1实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器实现的是1000分频,将50M赫兹的时钟信号分频成50000赫兹的时钟信号。LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider IS PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);

END;ARCHITECTURE Devider OF FreDevider IS CONSTANT N:Integer:=499;Signal counter:Integer range 0 to N;signal Clk:Std_Logic;BEGIN PROCESS(Clkin)begin IF rising_edge(Clkin)THEN IF Counter=N then counter<=0;Clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;分频器2实现的是50000分频,将50000赫兹的时钟信号分频成1赫兹的时钟信号。

LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider1 IS PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END;ARCHITECTURE Devider1 OF FreDevider1 IS CONSTANT N:Integer:=24999;signal counter:Integer range 0 to N;signal Clk:Std_Logic;BEGIN PROCESS(Clkin)begin IF rising_edge(Clkin)THEN IF Counter=N then counter<=0;Clk<=not clk;else counter<=counter+1;end if;end if;end process;

clkout<=clk;end;

2.控制器设计及仿真图

控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。功能:控制发光二极管的亮、灭,以及输出倒计时数值给七段译码管的分位译码电路。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY countroller IS PORT(Clock:IN STD_LOGIC;Hold:in std_logic;CountNum:in INTEGER RANGE 0 TO 89;NumA:out INTEGER RANGE 0 TO 90;RedA,GreenA,YellowA:out std_logic;RedB,GreenB,YellowB:out std_logic);END;ARCHITECTURE behavior OF Countroller IS BEGIN process(Clock)BEGIN IF falling_edge(Clock)THEN IF Hold='1' THEN RedA<='1';RedB<='1';GreenA<='0';GreenA<='0';YellowA<='0';YellowB<='0';

ELSIF CountNum<=54 THEN NumA<=55-CountNum;RedA<='0';GreenA<='1';YellowA<='0';ELSIF CountNum<=59 THEN NumA<=60;RedA<='0';GreenA<='0';YellowA<='1';ELSE NumA<=90-CountNum;RedA<='1';GreenA<='0';YellowA<='0';END IF;IF CountNum<=54 THEN RedB<='1';GreenB<='0';YellowB<='0';ELSIF CountNum<=84 THEN RedB<='0';GreenB<='1';YellowB<='0';ELSe RedB<='0';GreenB<='0';YellowB<='1';END IF;end if;END PROCESS;END;3.计数器的设计及仿真图

这里计数器的计数范围为0—90S,下一个时钟沿回复到0,开始下一轮计数.此外,当检测到特殊情况(Hold=‘1‘)发生时,计数器暂停计数。

程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY counter IS PORT(clock:IN STD_LOGIC;Hold:in std_logic;countNum:BuFFeR INTEGER RANGE 0 TO 90);

END;ARCHITECTURE behavior OF counter IS BEGIN Process(Clock)BEGIN IF rising_edge(Clock)THEN IF Hold='1' then countNum<=countNum;ELSE IF countNum=90 THEN countNum<=0;ELSE countNum<=countNum+1;END IF;END IF;END PROCESS;END;

4.分位模块的设计

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei IS PORT(Numin:IN integer RANGE 0 TO 90;NumA,NumB:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF Fenwei IS BEGIN process(Numin)BEGIN IF Numin>=60 THEN NumA<=10;NumB<=10;elsIF Numin>=50 THEN NumA<=5;NumB<=Numin-50;elsIF Numin>=40 THEN NumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THEN NumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THEN NumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THEN

NumA<=1;NumB<=Numin-10;ELSE NumA<=0;NumB<=Numin;END IF;END PROCESS;END;

5.数码管驱动设计 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY bcd_data IS PORT(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF bcd_data IS BEGIN process(bcd_data)BEGIN case bcd_data is when “0000”=>segout<=“1111110”;when “0001”=>segout<=“0110000”;when “0010”=>segout<=“1101101”;when “0011” =>segout<=“1111001”;when “0100” =>segout<=“0110011”;when “0101”=>segout<=“1011011”;when “0110”=>segout<=“0011111”;when “0111”=>segout<=“1110000”;when “1000” =>segout<=“1111111”;when “1001” =>segout<=“1110011”;when “1010”=>segout<=“0000000”;when others =>null;END CASE;END PROCESS;END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;

ENTITY dtsm IS PORT(clk:in STD_LOGIC;NumA,NumB,NumC,NumD: in STD_LOGIC_VECTOR(3 downto 0);segout1:out STD_LOGIC_VECTOR(6 downto 0);led_sel: out STD_LOGIC_VECTOR(3 downto 0));END dtsm;architecture bhv of dtsm is component bcd_data is port(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout:out STD_LOGIC_VECTOR(6 downto 0));end component;signal x:STD_LOGIC_VECTOR(3 downto 0);signal q:STD_LOGIC_VECTOR(1 downto 0);begin p1:process(clk)begin if clk'event and clk ='1' then Q<= Q + '1';end if;end process;

p2:process(Q)begin case Q is when“00”=>led_sel<=“1110”;x<=NumD;when“01”=>led_sel<=“1101”;x<=NumC;when“10”=>led_sel<=“1011”;x<=NumB;when“11”=>led_sel<=“0111”;x<=NumA;when others=>null;end case;end process;u1:bcd_data PORT map(bcd_data=>x,segout=>segout1);end;

6.顶层文件设置

library ieee;use ieee.std_logic_1164.all;entity jiaotongdeng is port(clk1:in std_logic;reset1:in std_logic;

hold1:in std_logic;segout2:out std_logic_vector(6 downto 0);led_sel1:out std_logic_vector(3 downto 0);reda1,yellowa1,greena1:out std_logic;redb1,yellowb1,greenb1:out std_logic);end jiaotongdeng;

architecture aa11 of jiaotongdeng is component FreDevider PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END component;

component FreDevider1 PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END component;component countroller PORT(Clock:IN STD_LOGIC;Hold:in std_logic;CountNum:in INTEGER RANGE 0 TO 89;NumA:out INTEGER RANGE 0 TO 90;RedA,GreenA,YellowA:out std_logic;RedB,GreenB,YellowB:out std_logic);END component;component counter PORT(clock:IN STD_LOGIC;reset:in std_logic;Hold:in std_logic;countNum:BuFFeR INTEGER RANGE 0 TO 90);END component;component Fenwei PORT(Numin:IN integer RANGE 0 TO 90;NumA,NumB:OUT Integer RANGE 0 to 9);END component;component dtsm PORT(clk:in STD_LOGIC;NumA,NumB: in Integer RANGE 0 to 9;segout1:out STD_LOGIC_VECTOR(6 downto 0);led_sel: out STD_LOGIC_VECTOR(3 downto 0));

END component;signal a,b:std_logic;signal c:INTEGER RANGE 0 TO 89;signal d:INTEGER RANGE 0 TO 90;signal e,f:Integer RANGE 0 to 9;begin u1: FreDevider port map(clkin=>clk1,clkout=>a);u2: FreDevider1 port map(clkin=>a,clkout=>b);u3:counter

port map(clock=>b,reset=>reset1,hold=>hold1,countnum=>c);u4:countroller port map(clock=>b,hold=>hold1,countnum=>c,numa=>d,reda=>reda1,greena=>greena1,yellowa=>yellowa1,redb=>redb1,greenb=>greenb1,yellowb=>yellowb1);u5:fenwei port map(numin=>d,numa=>e,numb=>f);u6:dtsm

port map(clk=>clk1,numa=>e,numb=>f,segout1=>segout2,led_sel=>led_sel1);end aa11;

四.硬件焊接与组装调试

按照如下图所示的电路图,在通用电路焊接板上合理布置各个元器件,进行焊接布线。

图3硬件焊接电路图

安装焊接完成后,仔细检查电路,是否有误。若与电路图不符,应及时排除错误。一切就绪后,将与FPGA对应的引脚使用杜邦线连接,连接完毕后,检查电源极性,避免反接。确认无误后,接通电源,观察实验结果。

首先我们完成的基本的功能,只是简单的倒计时显示,然后我们可以进一步修改我们的VHDL语言程序,重新烧入FPGA,以完善我们的设计。

五.心得体会

通过几天的课程设计,我对EDA技术、VHDL等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。

EDA设计我们感觉程序调试最重要,试验软件、硬件熟悉其次。直到没有错误。若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。都通过可以进行管脚配对,把程序烧入芯片,在实物上看结果,从显示中得出还需改正的地方,再去改程序。必须注意每改一次都要编译,重新烧入。我们采用模块化编程,模块化接线,再编译总原理图,思路比较清楚。有的模块可以供其它任务通用。

课程设计对学生而言是其对所学课程内容掌握情况的一次自我验证,从而有着极其重要的意义。通过课程设计能提高学生对所学知识的综合应用能力,能全面检查并掌握所学内容,在这学期的课程设计中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

另外,我还学到了一个人的力量毕竟有限,但是团队的力量势不可挡,我们不能局限,要学会合作。这次课程设计虽然结束了,相信以后我们会以更加积极的态度对待我们的学习、对待我们的生活。我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它。

六.参考文献

(1)潘松,黄继业.《EDA

技术使用教程》.科学出版社.2006.(2)潘松,黄继业.《EDA技术与VHDL(

下载实验四 用VHDL设计组合电路教案word格式文档
下载实验四 用VHDL设计组合电路教案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    四的分解组合教案

    大班数学活动:4的分解组合 (2008—2009年度第二学期) 活动目标: 1、在实物操作的基础上,了解4的分解组合。 2、初步学习有顺序的分合一个数。 3、能大胆地讲述自己的操作过程。......

    建筑平面组合设计教案

    第四章 建筑平面组合设计 在前边我们讲到,一幢建筑可以划分为主要使用空间、辅助使用空间和交通枢纽空间三部分,本章我们的主要任务是找出空间组合的总体性和规律性,使其有机的......

    用水果电池连接串联电路教学设计

    用水果电池连接串联电路 一、教学目标 1.学会制作简单的水果电池;初步尝试画简单的电路图。 2.形成合作与分享的意识;初步意识到科学研究的严谨性。 3.培养学生简单的科学研究......

    模仿实验电路完成运算应用电路的设计(5篇)

    一、设计内容 在仿真分析给定实验电路的基础上,模仿实验电路完成运算应用电路的设计,并给出仿真和实测结果。 (1)用Multisim10.0仿真观察附图中给定运放应用电路的实验工作现象......

    《实验四 细胞的有丝分裂》教案

    《实验四 细胞的有丝分裂》教案 一、实验目的 1.学习植物根尖细胞有丝分裂装片的制作方法 2.观察植物细胞有丝分裂过程,掌握有丝分裂各期的主要特征 二、材料与用品 洋葱头、......

    实验:组成串联电路和并联电路教案示例物理教案

    (一)教学目的 学会串联电路和并联电路的连接方法,会根据电路图连接简单的串联电路和并联电路。 (二)教具 两只小灯泡,一个电铃,三个开关,两节干电池组成的电池组,导线若干条。 投......

    第1节 家庭电路 教学设计 教案

    教学准备 1. 教学目标 1.掌握家庭电路的组成及各部分电路元件的作用,理解家庭电路布线示意图。 2.认识火线零线,知道验电笔的作用,会正确使用试电笔。 3.了解插座和插头和漏......

    第1节 家庭电路 教学设计 教案

    教学准备 1. 教学目标 1.理解、掌握家庭电路的组成. 2.懂得火线、零线的概念. 3.理解保险丝的作用. 4. 了解插座及家用电器的接地. 5. 了解测电笔的构造及使用方法. 2. 教学......