SOC复习资料.docx
- 文档编号:6517239
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:33
- 大小:192.18KB
SOC复习资料.docx
《SOC复习资料.docx》由会员分享,可在线阅读,更多相关《SOC复习资料.docx(33页珍藏版)》请在冰豆网上搜索。
SOC复习资料
IP核分类
SoftCores(“code”)(软核)HDL语言描述灵活度高,可修改与工艺独立,可根据具体的加工工艺重新综合;IP很难保护.
Firmcores(“code+structure”)(固核)逻辑综合后的描述与工艺相关
Hardcores(“physical”)(硬核)物理综合后的描述准备流片包含工艺相关的布局和时序信息IP很容易保护多数的处理器和存储器
IP:
IntellectualProperty(知识产权核)
软IP:
用计算机高级语言的形式描述功能块的行为,但是并不涉及用什么电路和电路元件实现这些行为。
固IP:
完成了综合的功能块,有较大的设计深度,以网表的形式提交客户使用。
硬IP:
提供设计的最终阶段产品:
掩膜。
综合:
把抽象设计层次中的一种表示转化成另一种表示的过程,该过程与器件硬件结构相关
函数与过程如何定义?
过程(PROCEDURE)用过程语句定义。
过程语句的结构如下:
PROCEDURE过程名(参数1;参数2;……)IS
[定义语句];--变量或常量定义
BEGIN
[顺序处理语句]--过程描述语句
END过程名;
FUNCTION函数名(参数1,参数2;···)RETURN数据类型名IS
[定义语句]
BEGIN
[顺序处理语句]
RETURN[返回变量名];
END函数名;
比较CASE语句与WITHSELECT语句,叙述它们的异同点。
共同点:
都用于描述条件电路;
异点:
CASE语句是顺序语句,而WITH SELECT语句是并发语句。
1.说明信号和变量的功能特点,应用上的异同点。
(1)信号和变量都可以连续地被赋值
(2)从行为仿真和VHDL语句功能上看,二者的区别主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。
例如信号可以设置延时量,而变量则不能;变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。
变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。
2.VHDL结构体的三种描述方式
行为描述即对设计实体按算法的路径进行描述;RTL(RegesistTransformLeval)描述,即寄存器传输级描述,有的文献称为数据流描述;结构化描述是常用的层次化设计方法。
●写出下列缩写的中、英文含义
¡ASIC专用集成电路
¡HDL硬件描述语言
¡SOPC可编程单片系统
¡RTL寄存器传输级
¡JTAG联合测试行动小组
¡PCB印刷电路板
¡FSM有限状态机
¡IP知识产权核(软件包)
¡FPGA现场可编程门阵列
¡CPLD复杂可编程逻辑器件
¡PLA可编程逻辑阵列
¡GAT通用阵列逻辑
¡HDPLD高密度可编程逻辑器件
¡ISP系统可编程
●比较下列数字,找出数值最小的一个(10#170#)
¡2#1111_1110#16#E#E1
¡8#276#10#170#
⏹HDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述(D)。
A.器件外部特性
B.器件的综合约束
C.器件外部特性与内部功能
D.器件的内部功能
⏹在一个VHDL设计中idata是一个信号,数据类型为integer,下面哪个赋值语句是不正确的(D)。
A.idata<=16#20#
B.idata<=32
C.idata<=16#A#E1
D.idata<=B#1010#
FPGA的可编程是主要基于什么结构(A)。
A.查找表(LUT)
B.ROM可编程
C.PAL可编程
D.与或阵列可编程
VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库(D)
A.IEEE库
B.VITAL库
C.STD库
D.WORK工作库
以下对于进程PROCESS的说法,正确的是(C)
A.进程之间可以通过变量进行通信
B.进程内部由一组并行语句来描述进程功能
C.进程语句本身是并行语句
下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确(A)
A.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计
B.原理图输入设计方法一般是一种自底向上的设计方法
C.原理图输入设计方法无法对电路进行功能描述
D.原理图输入设计方法不适合进行层次化设计
在VHDL语言中,下列对时钟边沿检测描述中哪一个是错误的。
(B)
A.ifclk'eventandclk='1'then
B.ifclk'stableandnotclk='1'then
C.ifrising_edge(clk)then
D.ifnotclk'stableandclk='1'then
进程中的变量赋值语句,其变量更新是(A)
A.立即完成
B.按顺序完成
C.在进程的最后完成
(多选)
对于信号和变量的说法,哪些是正确的。
(BCD)
A.信号用于作为进程中局部数据存储单元
B.变量的赋值是立即完成的
C.信号在整个结构体内的任何地方都能适用
D.变量和信号的赋值符号不一样
下列语句中,属于并行语句的是:
(ABC)
A.进程语句
B.WHEN…ELSE…语句
C.元件例化语句
D.CASE语句
在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确的是:
(ABC)
A.PROCESS为一无限循环语句
B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动
C.当前进程中声明的变量不可用于其他进程
D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成
10#170#--(十进制数表示,等于170)
2#1111_1110#--(二进制数表示,等于254)
16#E#E1--(十六进制数表示,等于2#11100000#,等于224)
16#F.01#E+2--(十六进制数表示,等于3841.00)
请判断下面的标识符是否合法:
_DECODER_1,2FFT,SIG_#N,Not-Ack,RYY_RST_,data__BUS,RETURN
_Decoder_1--起始为非英文字母
2FFT--起始为数字
Sig_#N--符号“#”不能成为标识符的构成
Not-Ack--符号“-”不能成为标识符的构成
RyY_RST_--标识符的最后不能是下划线“_”
data__BUS--标识符中不能有双下划线
return--关键词
判断下面3个程序中是否有错误,若有则指出错误所在。
程序1:
程序2:
SignalA,EN:
std_logic;Architectureoneofsampleis
Process(A,EN)variablea,b,c:
integer;
VariableB:
std_logic;begin
Beginc<=a+b;
ifEN=1thenB<=A;endif;end;
endprocess;
程序3:
libraryieee;
useieee.std_logic_1164.all;
entitymux21is
port(a,b:
instd_logic;
sel:
instd_logic;c:
outstd_logic;);
endsam2;
architectureoneofmux21is
begin
ifsel='0'thenc:
=a;
elsec:
=b;
endif;
endtwo;
答案:
程序1:
SignalA,EN:
std_logic;
Process(A,EN)
VariableB:
std_logic;
Begin
ifEN='1'thenB:
=A;endif;
endprocess;
程序2:
architectureoneofsampleis
begin
process
variablea,b,c:
integer;
begin
c:
=a+b;
endprocess;
endone;
程序3:
libraryieee;
useieee.std_logic_1164.all;
entitymux21is
port(a,b:
instd_logic;
sel:
instd_logic;c:
outstd_logic);
endmux21;
architectureoneofmux21is
begin
process(a,b,sel)
begin
ifsel='0'thenc<=a;
elsec<=b;
endif;
endprocess;
endone;
●1.分别用case语句和IF语句设计四选一电路?
●用IF语句设计四选一电路
●LIBRARYIEEE;
●USEIEEE.STD_LOGIC_1164.ALL;
●ENTITYmux4IS
●PORT(a,b,d0,d1,d2,d3:
INSTD_LOGIC;
●q:
OUTSTD_LOGIC);
●ENDmux4;
●ARCHITECTUREexample_ifOFmux4IS
●BEGIN
●PROCESS(a,b,d0,d1,d2,d3)
●BEGIN
●IF(a=‘0’ANDb=‘0’)THEN
●q<=d0;
●ELSIF(a=‘1’ANDb=‘0’)THE
●q<=d1;
●ELSIF(a=‘0’ANDb=‘1’)THEN
●q<=d2;
●ELSIF(a=‘1’ANDb=‘1’)THEN
●q<=d3;
●ENDIF;
●ENDPROCESS;
●ENDexample_if;
●用CASE语句设计四选一电路
●LIBRARYIEEE;
●USEIEEE.STD_LOGIC_1164.ALL;
●ENTITYmux4IS
●PORT(a,b,d0,d1,d2,d3:
INSTD_LOGIC;q:
OUTSTD_LOGIC);
●ENDmux4;
●ARCHITECTUREexample_caseOFmux4IS
●SIGNALsel:
INTEGERRANGE0TO3;
●BEGIN
●PROCESS(a,b,d0,d1,d2,d3)
●BEGIN
●sel<=’0’;
●IF(a=’1’)THEN
●sel<=sel+1;
●ENDIF;
●IF(b=’1’)THEN
●sel<=sel+2;
●ENDIF;
●CASEselIS
●WHEN0=>q<=d0;
●WHEN1=>q<=d1;
●WHEN2=>q<=d2;
●WHEN3=>q<=d3;
●ENDCASE;
●ENDPROCESS;
●ENDexample_case;
●2.将下列程序改写为WHEN_ELSE语句实现的程序段
PROCESS(a,b,c,d)
BEGIN
IFa=‘0’ANDB=‘1’THENnext1<=“1101”;
ELSIFa=‘0’THENnext1<=d;
ELSIFB=‘1’THENnext1<=c;
ENDIF;
ENDPROCESS;
修改:
PROCESS(a,b,c,d)
BEGIN
Next1<=”1101”WHENa=‘0’ANDB=‘1’ELSE
DWHENa=‘0’ELSE
CWHENB=‘1’;
ENDIF;
ENDPROCESS;
●5.比较CASE语句与WITH_SELECT语句,叙述它们的异同点。
以下程序是一个BCD码表示0~89计数器的VHDL描述,试补充完整。
libraryIEEE;
useieee.std_logic_1164.all;
useIEEE.std_logic_unsigned.all;
entitycnt90bis
port(clk,rst,en:
instd_logic;
cq:
outstd_logic_vector(7downto0);--计数输出
cout:
outstd_logic);--进位输出
endentitycnt90b;
ARCHITECTUREbhvofcnt90bis
begin
process(clk,rst,en)
variablecqi:
std_logic_vector(7downto0);
begin
ifrst='1'then
cqi:
=(other=>’0’);--计数器清零复位
else
ifclk’eventandclk=’1’then--上升沿判断
ifen='1'then
ifcqi(3downto0)<"1001"then--比较低4位
cqi:
=cqi+1;--计数加1
else
ifcqi(7downto4)<"1000"then--比较高4位
cqi:
=cqi+16;
else
cqi:
=(others=>'0');
endif;
cqi(3downto0):
=’0000’;--低4位清零
endif;
endif;
endif;
endif;
ifcqi=‘10001001’then--判断进位输出
cout<='1';
else
cout<='0';
endif;
cp<=cqi;
endprocess;
endarchitecturebhv;
下面程序是一个16位数控分频器的VHDL描述,试补充完整。
LibraryIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYPULSE16IS
PORT(CLK:
INSTD_LOGIC;
LOAD:
INSTD_LOGIC;
D:
INSTD_LOGIC_VECTOR(15DOWNTO0);
FOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFPULSE16IS
SIGNALFULL:
STD_LOGIC;
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT16:
STD_LOGIC_VECTOR(15DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFLOAD=’1’THEN--LOAD高电平置数
CNT16:
=D;
FULL<='0';
ELSE
IFCNT16="1111111111111111"THEN
CNT16:
=D;
FULL<='1';
ELSE
CNT16:
=CNT16+1;--计数加1
FULL<='0';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL’eventandFULL=’1’)--溢出信号为敏感信号
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL’EVENTANDFULL=’1’THEN--FULL上升沿判断
CNT2:
=NOTCNT2;
FOUT<=CNT2;
ENDIF;
ENDPROCESSP_DIV;
END;
下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。
libraryieee;
useIEEE.std_logic_1164.all;
useIEEE.Std_logic_unsigned.all;
useIEEE.std_logic_arith.all;
entitycounter_nis
generic(width:
integer:
=8);
port(data:
instd_logic_vector(width-1downto0);
load,en,clk,rst:
instd_logic;
q:
outstd_logic_vector(width-1downto0));
endcounter_n;
architecturebehaveofcounteris
signalcount:
std_logic_vector(width-1downto0);
begin
process(clk,rst)
begin
ifrst='1'then
count<=‘00000000’;――清零
――边沿检测
elsifclk’eventandclk=‘1’then
ifload='1'then
count<=data;
elseifen='1'then
count<=count+1;
endif;
endif;
endprocess;
out<=count;
endbehave;
⏹试写出下图2选一多路选择器的VHDL程序
图1mux21a实体图2mux21a结构体
ENTITYmux21aIS
PORT(a,b,s:
INBIT;
y:
OUTBIT);
ENDENTITYmux21a;
ARCHITECTUREoneOFmux21aIS
SIGNALd,e:
BIT;
BEGIN
d<=aAND(NOTS);e<=bANDs;y<=dORe;
ENDARCHITECTUREone;
ENTITYmux21aIS
PORT(a,b,s:
INBIT;
y:
OUTBIT);
ENDENTITYmux21a;
ARCHITECTUREoneOFmux21aIS
BEGIN
PROCESS(a,b,s)
BEGIN
IFs='0'THENy<=a;ELSEy<=b;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREone;
⏹
设计一数据选择器MUX,其系统模块图和功能表如下图所示。
试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
⏹(a)用if语句。
(b)用case语句。
(c)用whenelse语句。
Entitymymuxis
Port(sel:
instd_logic_vector(1downto0);--选择信号输入
Ain,Bin:
instd_logic_vector(1downto0);--数据输入
Cout:
outstd_logic_vector(1downto0));
Endmymux;
用if语句:
Architectureoneofmymuxis
Begin
Process(sel,ain,bin)
Begin
Ifsel=“00”thencout<=ainorbin;
Elsifsel=“01”thencout<=ainxorbin;
Elsifsel=“10”thencout<=ainandbin;
Elsecout<=ainnorbin;
Endif;
Endprocess;
Endone;
Case语句:
Architecturetwoofmymuxis
Begin
Process(sel,ain,bin)
Begin
Caseselis
when“00”=>cout<=ainorbin;
when“01”=>cout<=ainxorbin;
when“10”=>cout<=ainandbin;
whenothers=>cout<=ainnorbin;
Endcase;
Endprocess;
Endtwo;
Whenelse语句:
Architecturethreeofmymuxis
Begin
cout<=ainorbinwhensel=“00”else
Ainxorbinwhensel=“01”else
Ainandbinwhensel=“10”elseainnorbin;
Endthree;
写出半加器的VHDL程序
布尔方程描述方法
LIBRARYIEEE;--半加器描述
(1):
布尔方程描述方法
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_adderIS
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDENTITYh_adder;
ARCHITECT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOC 复习资料
![提示](https://static.bdocx.com/images/bang_tan.gif)