文档库 最新最全的文档下载
当前位置:文档库 › VHDL深入

VHDL深入

EDA技术与VHDL

第5章VHDL深入

5.1 数据对象及其示例说明

5.1.1 常数

CONSTANT 常数名:数据类型:= 表达式;

CONSTANT FBT : STD_LOGIC_VECTOR := "010110" ; --标准位矢类型CONSTANT DATAIN : INTEGER := 15 ; --整数类型

5.1 数据对象及其示例说明

5.1.2 变量

VARIABLE 变量名: 数据类型:= 初始值;

VARIABLE a : INTEGER RANGE 0 TO 15 ;

--变量a定义为常数,取值范围是0到5

VARIABLE d : STD_LOGIC := ‘1’;

--变量a定义为标准逻辑位数据类型, 初始值是1

5.1 数据对象及其示例说明

5.1.2 变量

目标变量名:= 表达式;

VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ;

--分别定义变量x和y为整数类型

VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ;

x := 11 ;

y := 2 + x ; --运算表达式赋值,y 也是实数变量

a :=

b --b向a赋值

a(0 TO 5) := b(2 TO 7) ;

5.1 数据对象及其示例说明

5.1.3 信号

SIGNAL 信号名:数据类型:= 初始值;

目标信号名<= 表达式AFTER 时间量;

SIGNAL a,b,c,y,z: INTEGER ;

...

PROCESS (a,b,c)

BEGIN

y <= a + b ;

z <= c –a ;

y <= b ;

5.1 数据对象及其示例说明

5.1.4 进程中的信号与变量赋值

表5-1 信号与变量赋值语句功能的比较

信号SIGNAL变量VARIABLE

基本用法用于作为电路中的信号连线用于作为进程中局部数据存

储单元

适用范围在整个结构体内的任何地方都

只能在所定义的进程中使用能适用

行为特性在进程的最后才对信号赋值立即赋值

5.1 数据对象及其示例说明

5.1.4 进程中的信号与变量赋值

【例5-1】

. . .

ARCHITECTURE bhv OF DFF3 IS

BEGIN

PROCESS (CLK)

VARIABLE QQ : STD_LOGIC ;

BEGIN

IF CLK'EVENT AND CLK = '1' THEN QQ := D1 ;

END IF;

END PROCESS ;

Q1 <= QQ;

END ;

5.1.4 进程中的信号与变量赋值

【例5-3】

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY DFF3 IS

PORT ( CLK,D1 : IN STD_LOGIC ;

Q1 : OUT STD_LOGIC ) ;

END ;

ARCHITECTURE bhv OF DFF3 IS

SIGNAL A,B : STD_LOGIC ;

BEGIN

PROCESS (CLK) BEGIN

IF CLK'EVENT AND CLK = '1' THEN

A <= D1 ;

B <= A ;

Q1 <= B ;

END IF;

END PROCESS ;

5.1.4 进程中的信号与变量赋值

【例5-4】

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY DFF3 IS

PORT ( CLK,D1 : IN STD_LOGIC ;

Q1 : OUT STD_LOGIC ) ;

END ;

ARCHITECTURE bhv OF DFF3 IS

BEGIN

PROCESS (CLK)

VARIABLE A,B : STD_LOGIC ;

BEGIN

IF CLK'EVENT AND CLK = '1' THEN

A := D1 ;

B := A ;

Q1 <= B ;

END IF;

END PROCESS ;

5.1.4 进程中的信号与变量赋值

5.1 数据对象及其示例说明

D Q D Q D Q D Q D1Q1

D1Q1

CLK

CLK

图5-1 例5-3的RTL 电路图5-2 D 触发器电路

5.1 数据对象及其示例说明5.1.4 进程中的信号与变量赋值

【例5-5】

SIGNAL in1,in2,e1,... :STD_LOGIC ;

...

PROCESS(in1,in2,. . .)

VARIABLE c1,. . . : STD_LOGIC_VECTOR(3 DOWNTO 0) ;

BEGIN

IF in1 = '1' THEN ... –-第 1 行

e1 <= "1010" ;–-第 2 行

...

IF in2 = '0' THEN . . . –-第15+n 行

...

c1 := "0011" ;–-第30+m 行

...

END IF;

END PROCESS;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux4 IS

PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;

q : OUT STD_LOGIC);

END mux4;

ARCHITECTURE body_mux4 OF mux4 IS

signal muxval: integer range 7downto0;

BEGIN

process(i0,i1,i2,i3,a,b)

begin

muxval<= 0;

if (a = '1') then muxval<=muxval+ 1; end if; if (b = '1') then muxval<=muxval+ 2; end if; case muxval is

when 0 => q <= i0;

when 1 => q <= i1;

when 2 => q <= i2;

when 3 => q <= i3;

when others => null;

end case;

end process;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY mux4 IS

PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC;

q : OUT STD_LOGIC);

END mux4;

ARCHITECTURE body_mux4 OF mux4 IS

BEGIN

process(i0,i1,i2,i3,a,b)

variable muxval: integer range 7downto0;

begin

muxval:= 0;

if (a = '1') then muxval:=muxval+ 1; end if; if (b = '1') then muxval:=muxval+ 2; end if; case muxval is

when 0 => q <= i0;

when 1 => q <= i1;

when 2 => q <= i2;

when 3 => q <= i3;

when others => null;

end case;

end process;

图5-3 例5-6的RTL电路(Synplify综合)

图5-4 例5-7的RTL电路(Synplify综合)

5.1.4 进程中的信号与变量赋值

5.1 数据对象及其示例说明

图5-5 例5-6

中错误的工作时序

5.1.4 进程中的信号与变量赋值

5.1 数据对象及其示例说明

图5-6 例5-7

中正确的工作时序

【例5-8】

Library IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SHIFT IS

PORT (CLK,C0 : IN STD_LOGIC; --时钟和进位输入

MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字

D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --待加载移位的数据

QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出

CN: OUT STD_LOGIC); --进位输出END ENTITY;

ARCHITECTURE BEHAV OF SHIFT IS

SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL CY : STD_LOGIC ;

BEGIN

PROCESS (CLK,MD,C0)

BEGIN

IF CLK'EVENT AND CLK = '1' THEN

CASE MD IS

WHEN "001" => REG(0) <= C0 ;

REG(7 DOWNTO 1) <= REG(6 DOWNTO 0); CY <= REG(7);--带进位循环左移

WHEN "010" => REG(0) <= REG(7);

REG(7 DOWNTO 1) <= REG(6 DOWNTO 0); --自循环左移

WHEN "011" => REG(7) <= REG(0);

REG(6 DOWNTO 0) <= REG(7 DOWNTO 1); --自循环右移

WHEN "100" =>REG(7) <= C0 ;

REG(6 DOWNTO 0) <= REG(7 DOWNTO 1); CY <= REG(0); --带进位循环右移

WHEN "101" => REG(7 DOWNTO 0) <= D(7 DOWNTO 0); --加载待移数WHEN OTHERS => REG <= REG ; CY <= CY ; --保持

END CASE;

END IF;

END PROCESS;

QB(7 DOWNTO 0) <= REG(7 DOWNTO 0); CN <= CY;--移位后输出

END BEHAV;

5.1.4 进程中的信号与变量赋值

5.1 数据对象及其示例说明

图5-7 例5-8中带进位循环左移仿真波形(MD="001"

5.2 双向和三态电路信号赋值例解

5.2.1 三态门设计

【例5-9】

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY tri_s IS

port ( enable : IN STD_LOGIC;

datain: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

dataout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );

END tri_s ;

ARCHITECTURE bhv OF tri_s IS

BEGIN

PROCESS(enable,datain)

BEGIN

IF enable = '1' THEN dataout<=datain;

ELSE dataout<="ZZZZZZZZ" ;

END IF ;

END PROCESS;

END bhv;

VHDL语言实例教学内容

VHDL语言实例 例1:设计一七段显示译码器,用它来驱动七段发光管LED显示十六进制数字0到9和字母A到F。LED显示数码管为共阳极。 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY HEX2LED IS PORT( HEX :IN std_logic_vector(3 DOWNTO 0); LED : OUT std_logic_vector(6 TO 0) ); END HEX2LED; 图例1 七段显示译码 器实体 ARCHITECTURE HEX2LED_arc OF HEX2LED IS BEGIN -- HEX-TO-SEVEN-SEGMENT DECODER -- SEGMENT ENCODING -- -- ---- -- 5 | |1 -- ---- <--6 -- 4 | |2

-- ---- -- 3 WITH HEX SELECT LED<= "1111001" when "0001", "0100100" when "0010", "0110000" when "0011", "0011001" when "0100", "0010010" when "0101", "0000010" when "0110", "1111000" when "0111", "0000000" when "1000", "0010000" when "1001", "0001000" when "1010", "0000011" when "1011", "1000110" when "1100", "0100001" when "1101", "0000110" when "1110", "0001110" when "1111", "1000000" when others; END HEX2LED_arc; 例2:设计一个八选一数据选择器 1)s是通道选择信号, d0,d1,d2,d3,d4,d5,d6,d7数据输入 out1是数据输出

基于VHDL的流水灯设计

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY huayang IS PORT(clk:IN STD_LOGIC; led0,led1,led2,led3,led4,led5,led6,led7,led8:OUT STD_LOGIC); END huayang; ARCHITECTURE haha OF huayang IS SIGNAL cnt :INTEGER RANGE 0 TO 49999999; signal clk1hz:INTEGER RANGE 0 TO 1; SIGNAL k1:INTEGER RANGE 0 TO 25; BEGIN PROCESS(clk) BEGIN IF (clk'EVENT AND clk='1') THEN IF(cnt=49999999) THEN cnt<=0; else cnt<=cnt+1; END IF; IF(cnt<=24999999) then clk1hz<=1; ELSE clk1hz<=0; END IF; END IF; IF(clk1hz'event and clk1hz=1) THEN IF(k1=25) THEN k1<=0; ELSE k1<=k1+1; END IF; END IF; END PROCESS; PROCESS(k1) BEGIN led0<='0'; led1<='0'; led2<='0'; led3<='0'; led4<='0';

led6<='0'; led7<='0'; led8<='0'; IF(k1=0) THEN led0<='1'; ELSIF(k1=1) THEN led1<='1'; ELSIF(k1=2) THEN led2<='1'; ELSIF(k1=3) THEN led3<='1'; ELSIF(k1=4) THEN led4<='1'; ELSIF(k1=5) THEN led5<='1'; ELSIF(k1=6) THEN led6<='1'; ELSIF(k1=7) THEN led7<='1'; ELSIF(k1=8) THEN led8<='1'; ELSIF(k1=9) THEN led7<='1'; ELSIF(k1=10) THEN led6<='1'; ELSIF(k1=11) THEN led5<='1'; ELSIF(k1=12) THEN led4<='1'; ELSIF(k1=13) THEN led3<='1'; ELSIF(k1=14) THEN led2<='1'; ELSIF(k1=15) THEN led1<='1'; ELSIF(k1=16) THEN led0<='1'; ELSIF(k1=17) THEN led4<='1'; ELSIF(k1=18) THEN led3<='1';

基于单片机的电子闹钟设计

基于单片机的电子闹钟设计 摘要 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。 关键词:单片机;led;闹钟;定时器 Abstract This design, adopting AT89C51 chip as the core part with some necessary peripheral circuits, is a simple electronic clock which uses 5V DC as the power supply. Keywords:single chip machine ,in fixed time machine, alarm clock,LED 1 引言 1.1设计目的 此次课程设计是在学习先修课程《单片机原理与系统设计》之后,为加强对学生系统设计和应用能力的培养而开设的综合设计训练环节。本课程设计应结合《单片机原理与系统设计》课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分。其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。 1.2设计要求 结合单片机知识,以AT89C51单片机为核心,利用七段LED数码管实现计时、校时及闹钟功能。 1.3设计方法 以AT89C51单片机为核心,外加晶振电路,使用8个七段数码管显示,LED 采用动态扫描,用74ls245芯片作为驱动电路。通过四个独立按键对时间进行定时、校时,从而实现闹钟提醒功能。 2 设计方案及原理 2.1设计方案 选AT89C51单片机作为系统核心,辅助外部产生时钟信号的晶振电路,再加上四个独立按键作为输入信号,使用8个七段数码管显示时间,芯片74ls245为数码管段选线的驱动,最后用蜂鸣器实现闹铃功能。使用单片机的定时器T0计时时间为50ms,计时20次作为1s的时间基准。第一部分,12MHz的晶振连接至单片机的时钟信号输入端;第二部分,四个独立按键加上四个上拉电阻连接至单片机

EDA-常见实例源程序代码vhdl

第4章用VHDL程序实现常用逻辑电路4.1 组合逻辑电路设计 4.1.1 基本逻辑门 library ieee; use iee.std_logic_1164.all; entity jbm is port(a,b: in bit; f1,f2,f3,f4,f5,f: out bit); end jbm; architecture a of jbm is begin f1<=a and b; --构成与门 f2<=a or b; --构成或门 f<=not a; --构成非门 f3<=a nand b; --构成与非门 f4<=a nor b; --构成异或门 f5<=not(a xor b); --构成异或非门即同门 end; 4.1.2 三态门 library ieee; use ieee.std_logic_1164.all; entity tri_s is port(enable: in std_logic; datain: in std_logic_vector(7 downto 0); dataout: out std_logic_vector(7 downto0)); end tri_s; architecture bhv of tri_s is begin process(enable,datain) begin if enable='1' then dataout<=datain; else dataout<="ZZZZZZZZ"; end if; end process; end bhv; 4.1.3 3-8译码器 library ieee; use ieee.std_logic_1164.all; entity decoder3_8 is port(a,b,c,g1,g2a,g2b: in std_logic; y: out std_logic_vector(7 downto 0)); end decoder3_8; architecture a of decoder3_8 is signal dz:std_logic_vector(2 downto 0); begin dz<=c&b&a; process (dz,g1,g2a,g2b) begin if(g1='1'and g2a='0'and g2b='0')then case dz is when "000"=> y<="11111110"; when "001"=> y<="11111101"; when "010"=> y<="11111011"; when "011"=> y<="11110111"; when "100"=> y<="11101111"; when "101"=> y<="11011111"; when "110"=> y<="10111111"; when "111"=> y<="01111111"; when others=>y<="XXXXXXXX"; end case; else y<="11111111"; end if; end process; 4.1.4 优先编码器

基于VHDL的自动售货机的设计与实现

自动售货机实验报告 一、设计任务 设计一个自动售货饮料机,设每瓶饮料2.5元,投币口有两个,1元硬币(one)或5角硬币(half),每个时刻可以输入其中一种硬币,自动售货机有找零钱功能,oute为出货,outm为找零。 二、设计过程 1.设计思路: 状态定义:s0表示初态,s1表示投入5角,s2表示投入1元,s3表示投入1元5角,s4表示投入2元,s5表示投入2元5角,s6表示投入3元。 输入信号:state_outputs(0)表示输入货物,comb_outputs(1)表示找5角硬币,输入信号为1 表示投入硬币,输入信号为1表示未投入硬币。 输出信号:comb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。 根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。

2.设计步骤: (1)创建工程。打开QuartusII ,创建一个新的工程并命名。根据实验室条件,选择的芯片为cyclone 系列中的EP1C6Q240C8芯片。 00

输入VHDL文本文件。新建文本文件VHDL file。输入程序并保存。程序如下:library ieee; use ieee.std_logic_1164.all; entity autosell is port(clk,reset :in std_logic; state_inputs:in std_logic_vector(0 to 1); comb_outputs:out std_logic_vector(0 to 1)); end autosell; architecture be of autosell is type fsm_st is(s0,s1,s2,s3,s4,s5,s6); signal current_state,next_state:fsm_st; begin reg:process(reset,clk) begin if reset='1'then current_state<=s0; elsif rising_edge(clk)then

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

基于VHDL语言的VGA程序

library ieee; use ieee.std_logic_1164.all; entity vgactr is port( c lk:in std_logic; rst:in std_logic; red:out std_logic; green:out std_logic; blue:out std_logic; H_Sync:out std_logic; V_Sync:out std_logic); end vgactr; architecture behavioral of vgactr is signal cnt_H:integer range 0 to 799; signal cnt_V:integer range 0 to 520; signal clk_H:std_logic:='0'; signal clk_V:std_logic:='0'; signal colorbuf:std_logic_vector(0 to 2); begin red<=colorbuf(0); green<=colorbuf(1); blue<=colorbuf(2); --50MHz分频为25MHz,作为水平扫描信号的时钟process(clk) variable n:integer range 0 to 1; begin if rising_edge(clk)then clk_H<=not clk_H; end if; end process; --水平扫描计数,并产生竖直扫描计数的时钟 process(clk_H,Rst) begin if rst='1' then cnt_H<=0; clk_V<='1'; elsif rising_edge(clk_H)then if cnt_H=799 then cnt_H<=cnt_H+1; end if;

vhdl课程设计(电子钟+闹铃)

数字钟的设计 一、系统功能概述 (一)、系统实现的功能: 1、具有“时”、“分”、“秒”的十进制数字显示(小时从00 ~ 23)。 2、具有手动校时、校分、校秒的功能。 3、有定时和闹钟功能,能够在设定的时间发出闹铃声。 4、能进行整点报时。从59分50秒起,每隔2秒发一次低音“嘟”的信号,连续5次, 最后一次为高音“嘀”的信号。 (二)、各项设计指标: 1、显示部分采用的6个LED显示器,从高位至低位分别显示时、分、秒。 2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。 3、有三个按钮分别调时、分、秒的时间。 4、有一个按钮用作开启/关闭闹铃。 5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为1Hz、 1kHz的脉冲。 二、系统组成以及系统各部分的设计 1、系统结构描述//要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(一)系统的顶层文件: 1、顶层文件图:(见下页) 2、各模块的解释: (1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、hour_set:其中clk_1khz为闹铃模块提供时钟,处理后能产生“嘟”、“嘀”和变化的闹铃声音;clk_1hz为计时模块提供时钟信号,每秒计数一次;key_slt选择设置对象:定时或正常时间;key_alarm能够开启和关闭闹铃;sec_set、min_set、hour_set用于设置时间或定时,与key_slt相关联。各按键输出为脉冲信号。 (2)、CNT60_A_SEC模块: 这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示秒的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key 上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有两个输出口out_do、out_di来触发整点报时的“嘟”、“嘀”声音。 (3)、CNT60_A_MIN模块: 这个模块式将CNT60_A_SEC的输出信号进行60进制计数,并产生一个时位的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示分的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有三个输出口out_do、out_di、out_alarm来触发整点报时的“嘟”、“嘀”、闹铃声音。

用VHDL设计三八译码器超赞版

3-8 译码器的设计 1 设计目的与要求 随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。由此,计算机对我们的社会对我们每个人都是很重要的。所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。 1.1 设计的目的 本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术 的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和 思想。以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC 设计能力,提高分析、解决计算机技术实际问题的独立工作能力。也能通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。 1.2 设计要求 根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中译码器的各个模块,并使用EDA工具对各模块进行 仿真验证和分析。译码器由三- 八译码器为实例代表。

关键词:输入、输出、译码2 VHDL 的简单介绍 2.1 VHDL 的简介 VHDL语言是一种用于电路设计的高级语言。它在80年代的后期 出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。VHDL 翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在我过的应用多数是用在FP GA/C PLD/E PL的设计中。 当然在一些实力较为雄厚的单位,它也被用来设计ASIG VHDL主要 用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHD啲程序结构特点是将一项工程设计, 或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 2.2 VHDL 的特点 1,功能强大,设计灵活: VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描 述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路 的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设 计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 2,, 支持广泛,易于修改: 由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA

vhdl基本语法

VHDL 基础语法篇——VHDL VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的内部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN S <= A XOR B XOR Ci; Co <= (A AND B) OR (A AND Ci) OR (B AND Ci); END addstr; 从这个例子中可以看出,一段完整的VHDL代码主要由以下几部分组成: 第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体

(完整版)基于VHDL毕业设计论文

本科毕业设计基于VHDL的FIR滤波器设计

学院名称工程学院专业名称电子信息工程 论文提交日 期2012年5月14 日 论文答辩日 期2012年5月19 日 摘要 常用的实时数字信号处理的器件有可编程的数字信号处理(DSP)芯片(如AD系列、TI系列)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。 有限长冲击响应(FIR)滤波器,由于FIR系统只有零点、系统稳定,便于实现FFT(快速傅里叶变换)算法、运算速度快、线性相位的特性和设计更为灵活等突出优点而在工程实际中获得广泛应用,属于数字信号处理的基本模块之一。本论文对基于FPGA的FIR数字滤波器实现进行了研究,所做的主要工作如下: 1.介绍了FIR数字滤波器的基本理论和FPGA的基本概况,以及FPGA设计流程、设计指导原则和常用的设计指导思想与技巧。 2.以FIR数字滤波器的基本理论为依据,使用分布式算法为滤波器的硬件实现算法,并对其进行了详细的讨论。 3.设计出一个16阶低通线性相位FIR滤波器实例。设计使用VHDL 语言通过Quartus II软件进行仿真。 关键词:FIR滤波器FPGA Quartus II Matlab VHDL The Design of FIR Filter base on VHDL (College of Engineering, South China Agricultural University,Guangzhou China) Abstract: Common real-time digital signal processing devices -specific

毕业设计闹钟系统设计

课程设计

课程设计任务书 课程EDA技术课程设计 题目闹钟系统的设计 主要内容、基本要求、主要参考资料等 主要内容: 设计并制作一个带闹钟功能的24小时计时器。它包括以下几个组成部分: 1、显示屏,由4 个七段数码管组成,用于显示当前时间(时:分)或设置的闹钟时间; 2、数字键,实现‘0’—‘9’的输入,用于输入新的时间或新的闹钟时间; 3、TIME(时间)键,用于确定新的时间设置; 4、ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间; 5、扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声 基本要求: 1、计时功能:这是本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。 2、闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。 3、设置新的计时器时间:用户用数字键输入新的时间,然后按"TIME"键确认。在输入过程中,输入数字在显示屏上从右到左依次显示。例如,用户要设置新的时间12:34,则按顺序输入“1”,“2”,“3”,“4”,与之对应,显示屏上依次显示的信息为:“1”,“12”,“123”,“1234"。如果用户在输入任意几个数字后较长时间内,例如5 s,没有按任何键,则计时器恢复到正常的计时显示状态。 主要参考资料: [1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003. 完成期限2011.3.11 指导教师 专业负责人 一、总体设计思想 1.基本原理 数字闹钟电路的基本结构由两个60进制计数和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。秒计数器的技术

原创:VHDL verilog 互相调用的例子

给两个例子, 一个是VHDL做顶层调用verilog 一个是verilog 做顶层调用VHDL VHDL调用verilog: module sync_block #( parameter INITIALISE = 2'b00 ) ( input clk, // clock to be sync'ed to input data_in, // Data to be 'synced' output data_out // synced data ); //VHD entity dcm_reset is port( ref_reset : in std_logic; -- Synchronous reset in ref_clk domain ref_clk : in std_logic; -- Reliable reference clock of known frequency (125MHz) dcm_locked : in std_logic; -- The DCM locked signal dcm_reset : out std_logic -- The reset signal which should be connected to the DCM ); end dcm_reset; component sync_block port ( clk : in std_logic; -- clock to be sync'ed to data_in : in std_logic; -- Data to be 'synced' data_out : out std_logic -- synced data ); end component; dcm_locked_sync_tx : sync_block port map( clk => ref_clk, data_in => dcm_locked, data_out => dcm_locked_sync ); verilog调用VHDL:(目标还是上述VHDL模块) module gmii_if ( …… ); dcm_reset rx_dcm_reset ( .ref_reset (tx_reset), .ref_clk (tx_clk),

基于单片机的定时闹钟课程设计报告书

任务书 一、设计目的 本设计主要是对51单片机的一个方面的扩展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,经过多次验证,此设计灵活简便,可以实现显示、定时、修改定时、定时时间到能发出报警声的功能。 二、设计要求 1、能显示时时—分分—秒秒。 2、能够设定定时时间,并修改定时时间。 3、定时时间到能发出警报声。

目录 1.绪论 (1) 2.方案论证 (1) 3.方案说明 (2) 4.硬件方案设计 (3) 4.1单片机STC89C52 (3) 4.2 时钟电路 (5) 4.3数码管显示电路 (6) 4.4键盘电路 (8) 4.5报警电路 (9) 5.软件方案设计 (10) 5.1系统软件设计 (10) 5.2键盘程序 (10) 5.3 LED (11) 5.4音响报警电路 (11) 5.5 程序流程图 (12) 6.调试 (12) 7.小结 (14) 8.参考文献 (15) 9.附录:定时闹钟源程序 (16)

1.绪论 系统采用单片机STC89C52作为本设计的核心元件,在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示器。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。 外围器件有LED显示驱动器及相应的显示数字电子钟设计与制作可采用单片机来完成。由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机STC89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB 的Flash存储器,且允许在系统内改写或用编程器编程。另外, STC89C52的指令系统和引脚与8051完全兼容,片内有512B的RAM、32条I/O 口线、3个16位定时计数器、4个外部中断、一个7向量4级中断结构(兼容传统51的5向量2级中断结构)等。 在LED显示器中,分成静态显示和动态显示两类,在这个设计的最小系统中主要用了它的动态显示功能,动态显示器利用了人视觉的短暂停留,在数据的传输中是一个一个传输的,且先传输低位。 2.方案论证 单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。

FPGA设计实例 四位加法器(含VHDL源程序)

EDA FPGA 四位加法器设计说明:程序使用原件例化语句编写。 半加器程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY bjq IS PORT(A,B:IN STD_LOGIC; Y,Co:OUT STD_LOGIC); END bjq; ARCHITECTURE bjqbehv OF bjq IS SIGNAL c,d:STD_LOGIC; BEGIN c<=A OR B; d<=A NAND B; Co<=NOT d; Y<=c AND d; END bjqbehv; 全加器程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY qjq IS PORT(Ci,A,B:IN STD_LOGIC;

S,Co:OUT STD_LOGIC); END qjq; ARCHITECTURE qjqbehv OF qjq IS BEGIN S<=A XOR B XOR Ci; Co<=(A AND B) OR (A AND Ci) OR (B AND Ci); END qjqbehv; 加法器例化程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jfq4 IS PORT(A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Co:OUT STD_LOGIC); END jfq4; ARCHITECTURE jfq4behv OF jfq4 IS COMPONENT qjq PORT(Ci,A,B:IN STD_LOGIC; S,Co:OUT STD_LOGIC); END COMPONENT; COMPONENT bjq PORT(A,B:IN STD_LOGIC; Y,Co:OUT STD_LOGIC); END COMPONENT; SIGNAL C0,C1,C2:STD_LOGIC; BEGIN u1:bjq PORT MAP(A(0),B(0),Y(0),C0); u2:qjq PORT MAP(C0,A(1),B(1),Y(1),C1); u3:qjq PORT MAP(C1,A(2),B(2),Y(2),C2); u4:qjq PORT MAP(C2,A(3),B(3),Y(3),Co); END ARCHITECTURE jfq4behv; 兄弟加qq 352995783,技术交流。 暮落 2011年12月2日

基于VHDL的电子密码锁

华南师范大学课程设计实验报告 课程名称:可编程数字系统设计 课程设计题目:电子密码锁 姓名:程硕 学院:物理与电信工程学院 专业:理综一班 年级:2011 学号:

一、设计原理 用VHDL设计电子密码锁方案:作为通用电子密码锁,主要由 3 个部分组成:数字密码按键输入电路、密码锁控制电路和密码锁显示电路,作为电子密码锁的输入电路。可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。 (1)密码锁输入电路包括时序产生电路、键盘检测电路、键盘消抖电路等几个小的功能电路。 (2)密码锁控制电路包括按键数据存储电路,恢复出厂密码、两次正确输入后可修改密码、密码核对,多次错误报警,清屏等几个小的功能电路。 (3)八段数码管显示电路主要将待显示数据的BCD码转换成数码器的八段显示驱动编码。 二、系统分析 本次课程设计成功地设计了一个简单的数字电子密码锁,密码为 4 位。将电子密码锁分为以下几个模块:按键消抖模块、密码锁逻辑控制模块和密码锁显示模块,实现了以下功能: (1)密码输入:KEY1按下一次,数码管上显示数字加一,相应位置输入密码加一 (2)位置选择:KEY2按下一次,数码管选择位左移一位 (3)密码确认:KEY3按下一次,比较外部输入密码与原密码,正确LED长亮,错误LED 变暗,同时显示密码置0; (4)密码修改:正确输入两次密码后,按下KEY4一次,将当前输入设为新的密码; (5)清屏:KEY5按下一次,外部输入置0; (6)恢复出厂设置:连续按下KEY5三次后恢复出厂密码“1234”; 三、程序设计 1由于程序稍显庞大,故采取分层次设计的方法,顶层采用画图法设计,底层采用VHDL语言进行设计。顶层电路图如图1所示 图1 Xiao_dou模块为按键消抖模块,main为密码锁控制模块,yima为数码管显示译码模块。Set_shuma

用VHDL设计三八译码器。。超赞版

3-8译码器的设计 1 设计目的与要求 随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。由此,计算机对我们的社会对我们每个人都是很重要的。所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。 1.1 设计的目的 本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。也能

通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。 1.2 设计要求 根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。译码器由三-八译码器为实例代表。 关键词:输入、输出、译码 2 VHDL的简单介绍 2.1 VHDL的简介 VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。 VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在我过的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体

相关文档
相关文档 最新文档