当前位置:首页 >> 历史学 >>

思考题


1.1.什么事硬件描述语言?它的主要作用是什么? 答:硬件描述语言(HDL)是一种用形式化方法来描述数字电路和设计数字逻辑系统的 语言。数字逻辑电路设计者利用它来描述自己的设计思想,然后用 EDA 工具进行仿真,再 自动综合到门级电路,最后用 ASIC 或 FPGA 实现其功能。 1.2.目前世界上符合 IEEE 标准的硬件描述语言有哪两种?它们各有什么特点? 答:Verilog HDL 和 VHDL。 Verilog HDL: (1)较多的第三方工具支持(2)语法结构比 VHDL 简单(3)学习起来比 VHDL 容易(4)仿真工具比较好使(5)测试激励模块容易编写 VHDL: (1)比 Verilog HDL 早几年成为 IEEE 标准(2)语法/结构比较严格,因而编写出的模 块风格比较清晰(3)比较适合由较多的设计人员合作完成的特大型项目(一百万门以上) 1.3.简单叙述一下利用 EDA 工具并采用硬件描述语言(HDL)的设计方法和流程。 答:采用自顶向下的设计方法:从系统级开始把系统划分为基本单元,然后再把每个基 本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用 EDA 元件库中的基 本单元来实现为止。流程: (1)设计开发,即从编写设计文件->综合到布局布线->电路生成 这样一系列步骤(2)设计验证,即进行各种仿真的一系列步骤,如果在仿真过程中发现问 题就返回设计输入进行修改。 1.4.采用硬件描述语言设计方法的优点是什么?有什么缺点? 答:优点: (1)电路的逻辑功能容易理解(2)便于计算机对逻辑进行分析处理(3)把 逻辑设计与具体电路的实现分成两个独立的阶段来操作 (4) 逻辑设计与实现的工艺无关 (5) 逻辑设计的资源积累可以重复利用(5)可以由多人共同更好更快地设计非常复杂的逻辑电 路(几十万门以上的逻辑系统) 1.5.专用集成电路(ASIC)技术:(Application Specific Integrated Circuit)在集成电路发展的基础上, 结合电路和系统的设计方法,利用 ICCAD/EDA/ESDA 等计算机辅助技术和设计工具,发展而 来的一种把实用电路或电路系统集成化的设计方法。 其定义为将某种特定应用电路或电路系 统用集成电路的设计方法制作到一片半导体芯片上的技术称为 ASIC 技术。 其特点是体积小, 成本低,性能优,可靠性高,保密性强,产品综合性能和竞争力强。 1.6.集成电路分类: 按结构分类,分为单片 IC 和混合 IC,其中单片 IC 分为双极型、MOS 型和 BiMOS 型,混合 IC 分为厚膜混合 IC 和薄膜混合 IC。 按规模分类,分为 SSI/MSI/LSI/VLSI/ULSI/GSI。 按功能分类,分为数字电路,模拟电路和数模混合电路,其中数字电路包括组合逻辑电路和 时序逻辑电路,模拟电路包括线性电路和非线性电路。 1.7.摩尔定律:①芯片的复杂性(定义为在单块半导体芯片上有源元件的数目)约每 18 个月 增加一倍; ②每个新芯片大体上包含其前任两倍的容量, 每个芯片的产生都是在前一个芯片 产生后的 18-24 个月内。 1.8.集成电路的行业特点:发展十分迅速,投资十分巨大,竞争十分激烈,地位十分重要, 前景十分美好。 1.9.ASIC 设计方法:全定制、半定制和可编程。其中全定制 ASIC 是利用集成电路最基本设计 方法(不使用现用库单元) ,对集成电路中所有的元器件进行精工细作的设计方法。半定制 设计方法又分成基于标准单元的设计方法 CBIC(Cell Based IC)和基于门阵列的设计方法. 1.10.常用可编程器件类型:可编程只读存储器 PROM(Programable Read_only Memory)、通用 阵列逻辑 GAL(Generic Array Logic)、可编程逻辑阵列 PLA(Programable Logic Array)、可编程阵 列逻辑 PAL(Programable Array Logic)、 可编程逻辑器件 PLD(Programable Logic Device)和复杂的 可编程逻辑器件 CPLD(Complex Programable Logic Device)。

1.11.ASIC 设计流程:设计输入、逻辑综合、系统划分、布图前仿真、布图规则、布局、布 线、提取(确定互连的电阻和电容)、布图后仿真。 1.12.Verilog 语言的三个主要部分:硬件描述语言 Verilog HDL,程序语言接口 PLI 和标准延时 格式 SDF。 1.14.行为仿真:行为的验证和验证模块分割的合理性; 前仿真:即 RTL 级仿真,检查有关模块逻辑执行步骤是否正确; 逻辑综合:把 RTL 级模块转换成门级; 后仿真:用门级模型做验证,检查门级的互连逻辑其功能是否正确; 布局布线:在门级的基础上加上了布线延时; 布局布线后仿真:与真实电路最接近的验证; 2.1.构成模块的关键词是什么? 答:module,endmodule。 2.2.什么叫综合?通过综合产生的是什么?产生的结果有什么用处? 答: 综合是通过综合器把行为级描述的模块转换为标准的门级结构网表。 通过综合产生 的是门级电路模块, 这种模块很容易与某种工艺的基本元件逐一对应起来, 再通过布局 布线工具自动地转变为某种具体工艺的电路布线结构。 2.3.仿真是什么?为什么要进行仿真?仿真可以在几个层面上进行?每个层面的仿真有什么 意义? 答: 仿真是对电路模块进行动态的全面测试。 进行仿真是为了通过观测被测试模块的的 输出信号是否符合要求, 可以调试和验证逻辑系统的设计结构准确与否, 并发现问题及 时修改。仿真可分为前仿真、逻辑网表仿真、门级仿真和布线后仿真。其中前仿真、逻 辑网表仿真、 门级仿真可以调试和验证逻辑系统的设计和准确与否, 并发现问题及时修 改;布线后仿真用于分析设计的电路模块的运行是否正常。 2.4.模块的端口是如何描述的? 答:用“.”表示被引用模块的端口。 2.5.在引用实例模块的时候,如何在主模块中连接信号线? 答:引用中, “.”表示端口,后面小括号内的信号名为与该端口连接的信号线名,可以 用别的名。 3.1.模块由几个部分组成? 答:模块由接口描述和逻辑功能描述两部分组成。 3.2.端口分为几种? 答:端口分为输入端口、输出端口和输入/输出端口三种。 3.3.模块的功能描述可以由哪几类语句或语句块组成?它们的出现的顺序会不会影响功能的 描述? 答:assign 语句(即连续赋值语句) 、实例引用和 always 语句(即过程赋值语句) ;它们 的出现顺序不会影响功能的描述。 3.4.最基本的 Verilog 变量有几种类型? 答:wire、reg、memory。 3.5.在 always 块中被赋值的变量必须是什么类型的? 答:reg 型。 3.6.逻辑运算符与按位逻辑运算符有什么不同,各用在什么场合? 答:逻辑运算符是对两个操作数进行逻辑运算,它多用于条件的判断;按位逻辑运算符 是对两个操作数对应的每一位进行逻辑运算,它多用于信号的运算和检测。 3.7.如果都不带时间延迟,阻塞和非阻塞赋值有什么不同?举例说明。

答:阻塞赋值是顺序执行而非阻塞赋值是并行执行。 举例:阻塞赋值 always @(posedge clk) begin b = a; c = b; end 非阻塞赋值 always @(posedge clk) begin b <= a; c <= b; end 阻塞赋值中,两条语句顺序执行(综合成一个触发器) ;而非阻塞赋值中,两条语句同 时执行(综合成两个触发器) 。 3.8.举例说明顺序块和并行块的不同。 答:顺序块: begin #50 r = ‘h35; #50 r = ‘hE2; #50 r = ‘h00; #50 r = ‘hF7; #50 ->end_wave end 并行块: fork #50 #100 #150 #200 #250

r = ‘h35; r = ‘hE2; r = ‘h00; r = ‘hF7; ->end_wave

join 上面两个块的执行效果一样。顺序块中,语句按顺序执行;并行块中,语句同时执行。 3.9.简述连续赋值(assign 语句)与阻塞赋值、非阻塞赋值(always 语句)之间的区别。 答: (1)assign 语句描述组合逻辑,而 always 语句既可以描述组合逻辑,又可以描述时 序逻辑; (2)assign 语句只使用“=” ,而 always 语句可使用“=”或“<=” ; (3)assign 语句中,等号右端的操作数发生变化时就执行一次(上电时便执行一次) ,而 always 语 句中,每满足一次条件就执行一次; (4)assign 语句用于驱动线网类型变量,而 always 语句用于驱动寄存器类型变量。 3.10.利用连续赋值和阻塞赋值方式实现 2 选 1 多路选择器。 答:连续赋值: module muxtwo(out, ain, bin, sel); output out;

input assign endmodule

ain, bin, sel; out = (sel == 0)? = a: b;

阻塞赋值: module muxtwo(out, ain, bin, sel); output out; input ain, bin, sel; reg out; always @(ain or bin or sel) if(sel == 0) out = ain; else out = bin; endmodule 3.11.如何用阻塞赋值方式来实现两个触发器电路?

答:module DFF_2_Blocking(c, a, b, clk); output reg c, b; input wire a, clk; always @(posedge clk) begin b = a; end always @(posedge clk) begin c = b; end endmodule 3.12.利用 begin-end 与 fork-join 语句编译得到一段周期为 10 个时间单位的信号波形。 答:begin-end: `timescale 1ns/1ns module wave_10(wave); output reg wave; parameter cycle = 10; initial begin wave = 1'b0; #(cycle / 2) wave = 1'b1; #(cycle / 2) wave = 1'b0;

#(cycle / 2) #(cycle / 2) #(cycle / 2) #(cycle / 2) end endmodule

wave = 1'b1; wave = 1'b0; wave = 1'b1; wave = 1'b0;

fork-join: `timescale 1ns/1ns module wave_10(wave); output reg wave; parameter CYCLE = 10; initial fork wave = 1'b0; #(1 * (CYCLE / 2)) #(2 * (CYCLE / 2)) #(3 * (CYCLE / 2)) #(4 * (CYCLE / 2)) #(5 * (CYCLE / 2)) #(6 * (CYCLE / 2)) join endmodule;

wave = 1'b1; wave = 1'b0; wave = 1'b1; wave = 1'b0; wave = 1'b1; wave = 1'b0;

3.13.Verilog HDL 的模型共有几种类型? 答:系统级、算法级、RTL 级、门级和开关级。 3.14.什么是综合?综合后还可以进行仿真吗? 答: 综合是通过综合器把行为级描述的模块转换为标准的门级结构网表。 综合后还可以 用 Verilog 进行仿真。 3.15.什么是 Top_Down 设计方法?通过什么手段来验证系统分块的合理性? 答:从系统设计入手,从顶层进行功能划分和结构设计,通过行为建模把一个复杂的系 统分解成可操作的若干个模块, 每个模块之间的逻辑关系通过行为建模的仿真加以验证。 3.16.设计一个 4 位移位寄存器。 答:source code: module shift_reg_4(out, clk, rst); output reg[3:0] out; input wire clk, rst; always @(posedge clk) begin if(!rst) out <= 4'b1001; else out <= {out[0], out[3:1]}; end endmodule

testbench: `timescale 1ns/1ns module tb_shift_reg_4; wire[3:0] out; reg clk, rst; initial begin clk = 1'b0; rst = 1'b1; #10 rst = 1'b0; #20 rst = 1'b1; end shift_reg_4 M(out, clk, rst); always #10 clk = ~clk; endmodule 3.17.for 循环是否可以表示综合的组合逻辑?举例说明。 答:for 循环可以表示可综合的组合逻辑,比如说用 for 循环实现的乘法器。 source code: module multiplier_4(result, opa, opb); output reg[16:1] result; input wire[8:1] opa, opb; integer bindex; always @(opa or opb) begin result = 0; for(bindex = 1; bindex <= 8; bindex = bindex + 1) if(opb[bindex]) result = result + (opa << (bindex - 1)); end endmodule testbench: `timescale 1ns/1ns module tb_multiplier_4; wire[16:1] result; reg[8:1] opa, opb; multiplier_4 M(result, opa, opb); initial begin opa = 10; opb = 2; end always #10

begin opa = opa + 3; opb = opb + 1; end endmodule 3.18.利用 for 语句设计实现七人投票表决器程序。 答:source code: module voter_7(pass, voter); output reg pass; input wire[6:0] voter; reg[2:0] sum; integer i; always @(voter) begin sum = 0; for(i = 0; i <= 6; i = i + 1) if(voter[i]) sum = sum + 1; if(sum[2]) pass = 1'b1; else pass = 1'b0; end endmodule testbench: `timescale 1ns/1ns module tb_voter_7; wire pass; reg[6:0] voter; voter_7 M(pass, voter); initial voter = 7'b1000_001; always #10 voter = voter + 1'b1; endmodule 3.19.利用 for、while 和 repeat 语句实现一个 32 位整数循环的程序。 答:for: module for_loop; integer i; initial begin for(i = 0; i < 4; i = i + 1) $display("i = %h", i); end

endmodule while: module integer initial begin

while_loop; i;

i = 0; while(i < 4) begin $display("i = %h", i); i = i + 1; end end endmodule repeat: module integer initial begin

repeat_loop; i;

i = 0; repeat(4) begin $display("i = %h", i); i = i + 1; end end endmodule 3.20 分别用连续赋值语句、任务和函数描述一个 4 选 1 多路选择器。 答:连续赋值语句: source code: module assign_mux_4(out, ain, bin, cin, din, sel); output wire[3:0] out; input wire[3:0] ain, bin, cin, din; input wire[1:0] sel; assign out = (sel == 2'b00)? ain:((sel == 2'b01)? bin:((sel == 2'b10)?cin: ((sel == 2'b11)? din:'bx))); endmodule testbench: `timescale 1ns/1ns module tb_assign_mux_4; wire[3:0] out; reg[3:0] ain, bin, cin, din; reg[1:0] sel; assign_mux_4 M(out, ain, bin, cin, din, sel);

initial begin ain = 4'b1000; bin = 4'b0100; cin = 4'b0010; din = 4'b0001; end always #10 sel = {$random} / 4; endmodule 任务: source code: module output input input

task_mux_4(out, ain, bin, cin, din, sel); reg[3:0] out; wire[3:0] ain, bin, cin, din; wire[1:0] sel;

always @(sel or ain or bin or cin or din) task_mux(out, ain, bin, cin, din, sel); task task_mux; output[3:0] out; input[3:0] ain, bin, cin, din; input[1:0] sel; begin case(sel) 2'b00: out = ain; 2'b01: out = bin; 2'b10: out = cin; 2'b11: out = din; default: out = 'bx; endcase end endtask endmodule testbench: `timescale 1ns/1ns module tb_task_mux_4; wire[3:0] out; reg[3:0] ain, bin, cin, din; reg[1:0] sel; task_mux_4 M(out, ain, bin, cin, din, sel); initial begin ain = 4'b1000;

bin = 4'b0100; cin = 4'b0010; din = 4'b0001; end always #10 sel = {$random} / 4; endmodule 函数: 3.21.沿触发的 always 块和电平触发的 always 块各表示什么类型的逻辑电路?为什么? 答:沿触发的 always 块常常描述时序逻辑,电平触发的 always 块常常用来描述组合逻 辑和带锁存器的组合逻辑。 3.22.简述任务和函数的不同点。 答: ①函数只能与主模块共用同一个仿真时间单位, 而任务可以定义自己的仿真时间单 位;②函数不能启动任务,而任务能启动其它任务和函数;③函数至少要有一个输入变 量, 而任务可以没有或有多个任何类型的变量; ④函数返回一个值, 而任务则不返回值。 3.23.条件预编译对 ASIC 或 FPGA 开发来说都有哪些好处? 答:一般情况下,Verilog HDL 的源程序中所有的行都将参加编译。但有时希望对其中 一部分内容只在满足条件下才进行编译,也就是对一部分内容指定编译条件。有时,希 望当满足条件时对一组语句进行编译,而当条件不满足时则编译另一部分。 3.24.请仔细阐述`timescale 编译预处理的作用? 答:用于说明跟在该命令后的模块的时间单位和时间精度。 3.25.非阻塞赋值语句和阻塞赋值语句的区别。 答:非阻塞赋值语句(b <= a):①块内的赋值语句同时执行;②b 的值被赋值成新值 a 的操作, 是与块内其它赋值语句同时完成的; ③建议在可综合风格的模块中使用非阻塞赋值。 阻塞赋值语句(b = a):①完成该赋值语句后才能做下一句的操作;②b 的值立即 被赋值成新值 a;③硬件没有对应的电路,因而综合结果未知。 3.26.同步复位与异步复位的优缺点。 答:同步复位,优点:①有利于仿真器的仿真;②可以使所设计的系统成为 100%的同 步时序电路,这便大大有利于时序分析,而且综合出来的 fmax 一般较高;③因为时钟有效电 平到来时才有效,所以可以滤除高于时钟频率的毛刺。 缺点:①复位信号的有效时长必须大于时钟周期,才能真正被系统识别 并完成复位。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素;②由 于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口, 所以, 倘若采用同步复位的话, 综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。 异步复位,优点:①大多数目标器件库的 DFF 都有异步复位端口,因此采用异步复 位可以节省资源; ②设计相对简单; ③异步复位信号识别方便, 而且可以很方便地使用 FPGA 的全局复位端口 GSR。 缺点:①在复位信号释放(release)的时候容易出现问题。具体就是说: 倘若复位释放时恰恰在时钟有效沿附近, 就很容易使寄存器输出出现亚稳态, 从而导致亚稳 态;②复位信号容易受到毛刺的影响 3.27.解释 UDP 的含义,并简述使用时需要注意的事项。 答:含义:定义有自己特色的用于仿真的基本逻辑单元模块并建立相应的原语库。 注意事项:①UDP 只能有一个输出端,而且必须是端口说明列表的第一项;②UDP

可以有多个输入端,最多允许有 10 个输入端;③UDP 所有的端口变量必须是标量,即必须 是一位的;④UDP 的真值表中,只允许出现 0、1、X 三种逻辑值,高阻值状态 Z 是不允许出 现的;⑤只有输出端才可以被定义为寄存器类型变量;⑥initial 语句用于为时序电路内部 寄存器赋初值,只允许赋 0、1、X 三种逻辑值,缺省值为 X。 3.28..简述阻塞赋值与非阻塞赋值的使用原则。 答:①时序电路建模时,用非阻塞赋值;②锁存器电路建模时,用非阻塞赋值;③在 always 块写组合逻辑时,采用阻塞赋值;④在同一个 always 块中同时建立时序和组合逻辑 电路时,用非阻塞赋值;⑤在同一个 always 块中不要同时使用非阻塞和阻塞赋值;⑥不要 在多个 always 块中为同一个变量赋值;⑦用$strobe 系统任务来显示用非阻塞赋值的变量 值;⑧在赋值时不要使用#0 延迟。 3.29.触发器与锁存器的区别。 答:①锁存器没有时钟端,不受系统同步时钟的控制,无法实现同步操作;②锁存器对 输入电平敏感, 受布线延时影响较大, 对毛刺敏感; ③锁存器将静态时序分析变得极为复杂; ④目前锁存器只在极高端的电路中使用; ⑤触发器受时钟控制, 只有在时钟触发时才采样当 前的输入,产生输出。 3.30.写出几条使用 Verilog 需注意的基本点(至少 5 条) 。 答:①不使用初始化语句;②不使用延时语句;③不使用循环次数不确定的语句,如 forever,while 等; ④尽量采用同步方式设计电路; ⑤尽量采用行为语句完成设计; ⑥always 过程块描述组合逻辑时,应在敏感信号列表中列出所有的输入信号;⑦UDP 不可综合;⑧建 立时序逻辑模型时,采用非阻塞赋值语句;⑨建立 latch 模型时,采用非阻塞赋值语句;⑩ 在 always 块中建立组合逻辑模型时,采用阻塞赋值语句;


相关文章:
思考题
思考题_历史学_高等教育_教育专区。第二章 1.设计城市给水系统时应考虑哪些用水量? 在设计给水系统时, 除了求出设计年限内最高日用水量和最高日的最高一小时...
小学三年级下册思考题
小学三年级下册思考题_其它课程_小学教育_教育专区。306 天天练 1. 小红去银行取款,第一次取了存款的一半还多 5 元,第二次取余下的一半还多 10 元, 这时...
思考题
思考题 1、 试比较螺杆式挤出机与移动螺杆注塑机的异同点 螺杆结构与挤出机所用螺杆基本相同,但有其特点: ○注射螺杆在旋转的同时有轴向运动,有效长度是变化的...
中国近代史纲要思考题及答案
中国近代史纲要思考题及答案_历史学_高等教育_教育专区。上编 1 、为什么说鸦片战争是中国近代历史的起点? (1)鸦片战争前,中国是一个领土完整、主权独立的封建...
2015版毛概课后思考题答案
2015版毛概课后思考题答案_哲学_高等教育_教育专区。1.为什么说改革开放是发展中国特色社会主义的必由之路?(1)30 多年的实践 证明改革开放是决定当代中国命运的关键...
三年级上册思考题集(有答案)
三年级上册思考题集(有答案)_三年级数学_数学_小学教育_教育专区。(1)相邻两棵树之间的距离相等,小红从第一棵跑到第 16 棵树,共跑了 150 米,小华从第 7 ...
趣味思考题
趣味思考题_其它_高等教育_教育专区。趣味思考题有 3 个人去投宿, 一晚 30 元。三个人每人掏了 10 元凑够 30 元交给了老板。后来老板说今天优惠只要 25 元...
大圆满前行广释全部思考题
大圆满前行广释全部思考题_文化/宗教_人文社科_专业资料。前行广释全部思考题及答案 《大圆满前行广释》第一讲 思考题答题 1、你对《大圆满前行》有哪些认识?...
小学五年级思考题大全
小学五年级思考题大全_五年级数学_数学_小学教育_教育专区。小学五年级上册应用题 1、 张师傅加工一批零件,4 天完成了 84 个,照这样计算,再用 5 天就能把这...
思考题
思考题_历史学_高等教育_教育专区。董事会与注册会计师的PK:财务报告内部控制有效吗?(1) 启发思考题 1.何为有效的财务报告内部控制?何为无效的财务报告内部控制...
更多相关标签: