根据VHDL复习提纲整理的复习资料

更新时间:2023-09-29 23:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 部分小题应掌握内容

1. 常用简写的英文全称和中文意思EDA,VHDL,FPGA,CPLD,ASIC,SOC EDA全称Electronic Design Automation,电子设计自动化

VHDL全称VHSIC Hardware Description Language,硬件描述语言 FPGA全称Field Programmable Gate Array,现场可编程门阵列

CPLD全称Complex Programmable Logic Device,复杂可编程逻辑器件 ASIC全称Application Specific Intergrated Circuit,专用集成电路 SOC全称System On a Chip,单片电子系统

2. VHDL设计过程,设计的输入方式

VHDL设计过程包括设计准备、设计输入、设计实现、器件编程与配置、设计验证;

设计的输入方式有文本输入、状态图输入、波形图输入、原理图输入。

3. 常用的硬件描述语言主要有? VHDL, AHDL, Verilog HDL, ABEL等。

4. 可编程逻辑器件的构成方法也即CPLD和FPGA的原理,(乘积项、查找表法的原理)

CPLD基于乘积项技术;FPGA基于查找表技术。

5. 完整的VHDL程序叫做设计实体,完整的VHDL程序的构成? 完整的VHDL程序由库、程序包、实体、结构体和配置等部分构成。

6. VHDL库的情况,有哪些库,哪些主要的包,工作库是什么,哪些库默认打开

VHDL语言的库分为两类:设计库和资源库;

库的种类:IEEE库、STD库、WORK库、VITAL库等;

常用的预定义程序包有:STD_LOGIC_1164程序包、STD_LOGIC_ARITH程序包、STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包、STANDARD和TEXTIO程序包;

工作裤是一个逻辑名,用于存放用户设计和定义的一些设计单元和程序包; STD库和WORK库是默认打开的。

7. VHDL的操作符有哪些?VHDL命名规则(正确错误的命名)。数值表示方法(判断不同写法数据的大小)

VHDL的操作符包括逻辑操作符、关系操作符、算术操作符和符号操作符。 VHDL命名规则:由字母、数字或‘_’组成,必须以英文字母开头’‘_’后必须有字母或数字,不区分大小写。

数字表示:15E2=1500, 45_234_287=45234287

8. 端口类型,数据对象有哪些?

端口类型包括IN , OUT , INOUT , BUFFER; 数据对象包括常数、变量、信号。

9. 变量、信号的相关知识,异同点,电气特性赋值方法,赋值相关特点等等。 变量:

赋值符号:=,功能:内部数据交换,作用范围:进程内部,行为:立即赋值; 信号:

赋值符号<=,功能:电路的内部连接,作用范围:全局、进程和进程间的通信,行为:延迟一定时间后才赋值。

10.函数的重载和过程的重载的相关知识。 略

11. 状态机的相关知识。不同分类方法所分的两种类型。具体编程 从状态机的信号输出方式上分,有Mealy和Moore型两种状态机; 从结构上分,有单进程状态机和多进程状态机;

从状态表达方式上分,有符号状态机和确定状态编码的状态机; 从编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。

具体编程见附件。

12. EDA工作设计流程

EDA设计流程包括设计准备、设计输入、设计实现、器件编程与配置、设计验证。

13. 顺序语句和并行语句,顺序语句有哪些?并行语句有哪些。具体到CASE语句的使用,PROCESS语句的特点及使用。

顺序语句:IF,CASE,LOOP,NEXT,WAIT,EXIT,RETURN,赋值语句,空操作语句

并行语句:实体说明语句,端口说明语句,块语句,元件例化语句,生成语句等

14. QuartusII软件使用过程中的一些知识,最常用的,只要自己实验认真做过的都知道。 略

15. 上升沿,下降沿的产生方法

上升沿:IF CLK’ EVENT AND CLK=’1’;下降沿:IF CLK’ EVENT AND CLK=’0’。

16. 转换函数知识。 略P261

17. 各种语句if case 例化语句 PROCESS语句等

填空选择总共50分,总的来说就是这几个方面:第一章基础知识、第二章硬件特性(一二章10分左右)、第七章VHDL语句(5)、第八章VHDL结构(5)、第三章涉及的部分细节(25分左右)、第五章状态机部分知识(5分左右) 各章节有交叉以上统计不严谨,仅供参考。

二、大题应主要掌握内容(程序填空和2个大题20+15+15)

1. PPT所讲过的例题。 2. 作业题

3. 实验做过的题目

触发器,门电路,计数器,译码器,一位全加器,一位全减器,移位器,锁存器,状态机等等。

附件:

1.二选一数据选择器 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS

PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ; END ENTITY mux21a ;

ARCHITECTURE one OF mux21a IS BEGIN

y <= a WHEN s = '0' ELSE b ;

END ARCHITECTURE one ;

2. 触发器 LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS

PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF1;

ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN

PROCESS (CLK) BEGIN

IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ; END IF;

END PROCESS ; Q <= Q1 ; END bhv;

3. 带异步复位和同步时钟使能的十进制加法计数器 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS

PORT (CLK,RST,EN : IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;

ARCHITECTURE behav OF CNT10 IS

BEGIN

PROCESS(CLK, RST, EN)

VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST = ‘1’ THEN CQI := (OTHERS =>‘0’) ; --计数器异步复位 ELSIF CLK‘EVENT AND CLK=’1‘ THEN --检测时钟上升沿 IF EN = ‘1’ THEN --(同步使能)

IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 是否小于9 。>=9? ELSE CQI := (OTHERS =>‘0’) ; --大于9,计数值清零 END IF; END IF; END IF;

IF CQI = 9 THEN COUT <= ‘1’; --计数大于9,输出进位信号,计数次数? ELSE COUT <= '0'; END IF;

CQ<=CQI; --将计数值向端口输出 END PROCESS; END behav;

4. 移位寄存器 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); --移位模式控制字(6种模式)

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” => D(7 DOWNTO 0 ) <= REG(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.一位全加器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS

PORT (ain,bin,cin : IN STD_LOGIC;

cout,sum : OUT STD_LOGIC ); END ENTITY f_adder;

ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder

PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a

PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT;

SIGNAL d,e,f : STD_LOGIC; BEGIN

u1 : h_adder PORT MAP(a=>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;

6.8-3优先编码器

LIBRARY IEEE; --8-3线优先编码器的VHDL描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS

PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7);

output : OUT STD_LOGIC_VECTOR(0 TO 2) ); END coder;

ARCHITECTURE behavOF coder IS BEGIN

PROCESS (din) BEGIN

IF (din(7)='0') THEN output <= \ ELSIF (din(6)='0') THEN output <= \

ELSIF (din(5)='0') THEN output <= \ ELSIF (din(4)='0') THEN output <= \ ELSIF (din(3)='0') THEN output <= \ ELSIF (din(2)='0') THEN output <= \ ELSIF (din(1)='0') THEN output <= \ ELSE output <= \ END IF ; END PROCESS ; END behav;

7. 译码器

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all; entity Decoder is

port ( DIN : in std_logic_vector(3 downto 0); DOUT_n : out std_logic_vector(15 downto 0) ); end Decoder;

architecture Decoder_arch of Decoder is begin

gen : for i in 0 to 15 generate

DOUT_n(i) <= '0' when DIN = i else '1';

end generate;

end Decoder_arch;

8. 八位并入串出右移寄存器 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SHFRT IS --8位并入串出右移寄存器 PORT ( CLK,LOAD : IN STD_LOGIC;

DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB : OUT STD_LOGIC ); END SHFRT;

ARCHITECTURE behav OF SHFRT IS BEGIN

PROCESS (CLK, LOAD)

VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

IF CLK'EVENT AND CLK = '1' THEN

IF LOAD = ‘1’ THEN REG8 := DIN; --由(LOAD=‘1’)装载新数据 ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF;

END IF;

QB <= REG8(0); --输出最低位,在IF语句外不需要CLK 上升沿触发 END PROCESS; -- CLK 变化但未满足上升沿之前已经赋值给QB END behav;

9.状态机 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY S_MACHINE IS PORT (clk, reset : IN STD_LOGIC; st_input : IN STD_LOGIC_VECTOR(0 TO 1); comb_output : OUT STD_LOGIC_VECTOR(0 TO 3)); END S_MACHINE;

ARCHITECTURE bhv OF S_MACHINE IS TYPE FSM_ST IS (S0, S1,S2, S3); SIGNAL current_st, next_st : FSM_ST; BEGIN REG:PROCESS(reset, clk) BEGIN IF reset = '1' THEN current_st <= S0; ELSIF clk'EVENT AND clk = '1' THEN current_st <= next_st; END IF; END PROCESS; COM:PROCESS(current_st, st_input) BEGIN CASE current_st IS WHEN S0 => comb_output <= \ IF st_input = \ ELSE next_st <= S0; END IF; WHEN S1 => comb_output <= \ IF st_input = \ ELSE next_st <= S1; END IF; WHEN S2 => comb_output <= \ IF st_input = \ ELSE next_st <= S2; END IF; WHEN S3 => comb_output <= \ IF st_input = \

ELSE next_st <= S3; END IF; END CASE; END PROCESS; END bhv;

本文来源:https://www.bwwdw.com/article/cqdd.html

Top