EDA_VerilogHDL_复习提纲_第1页
EDA_VerilogHDL_复习提纲_第2页
EDA_VerilogHDL_复习提纲_第3页
EDA_VerilogHDL_复习提纲_第4页
EDA_VerilogHDL_复习提纲_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、I. EDA技术是20世纪后期,伴随着微电子技术、大规模集成电路制造技术、计算机辅助工程、可编程逻辑器件以及电 子设计技术和工艺的发展而同步发展形成的一门综合性的技术与学科。 2在EDA工具软件平台上,自动完成从软件方式描述的数字系统到硬件系统的逻辑化简、逻辑分割、逻辑综合、结构 综合(布局布线)、逻辑优化和仿真测试等功能,随之完成对于特定目标芯片的适配、逻辑映射、编程下载等工作, 直至硬件实现整个数字系统 3. 综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现 综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序 4

2、. 设计输入 的方式有原理图、硬件描述语言、状态图以及波形 5. 按照仿真的电路描述级别的不同,HDL仿真器可以完成:系统级仿真,行为级仿真, 真。按照仿真是否考虑 硬件延时分类,可以分为:功能仿真和时序仿真。 和基于HDL语言的仿真器 6. IP核是知识产权核或知识产权模块, 在EDA技术中具有十分重要的地位。 半导体产业的IP定义为用于ASIC或FPGA 中的预先设计好的电路功能模块。IP分为软IP、固IP和硬IP。 7. 可编程逻辑器件 PLD是一种通过用户编程或配置实现所需逻辑功能的逻辑器件, 通过EDA开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能 8. 两种可编程逻辑结

3、构 是基于与-或阵列可编程结构(乘积项逻辑可编程结构) 、基于SRAM查找表的可编程逻辑结构 9. PLD按集成度分类:简单PLD、复杂PLD ;按结构分类:基于 与-或”阵列结构的器件、基于查找表结构的器件; 从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM 型、Flash型 10. 四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定, 与阵列可编程;GA是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元(OLMC) II. CPLD的组成结构:逻辑阵列块(由逻辑宏单元构成)、扩展乘积项(共享和并联)、可编

4、程连线阵列、 12.FPGA的组成结构:逻辑阵列块 LAB (由多个逻辑宏单元构成)、嵌入式存储器块、嵌入式硬件乘法器、 PLL等模块 的端口模式 有三种:输入端口、输岀端口、双向端口,对应的端口定义关键词分别是: 中常用有 两种变量:寄存器型变量(用 reg定义)、网线型变量(用 wire定义) 有两种赋值 方式:阻塞式赋值(=)、非阻塞式赋值(=) 有 四种循环 语句:for 语句、rep eat语句、while 语句、forever语句 的描述风格:RTL描述、数据流描述、行为描述、结构描述 RTL级仿真,门级(时序)仿 仿真器可分为基于元件(逻辑门)仿真器 也就是说用户可以根据自己的需

5、求, I/O控制块 I/O单元和 13. Verilog 14. Venlog 15. Venlog 16. Verilog 17. Verilog input、out put、inout 上分,有单过程状态机和 编码方式上分,有丿顺 18. 从状态机的信号输出方式上分,有 Mealy型和Moore型两种状态机;从状态机的 描述结构 多过程状态机;从状态机 表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机 序编码状态机、一位热码编码状态机或其他编码方式状态机。 19. 状态机结构通常包含说明部分、主控时序过程、主控组合过程、辅助过程等几个部分 20. 非法状态 是在状态机设计中,使

6、用枚举类型和直接指定状态编码的程序中,特别是使用了一位热编码方式后,总是 不可避免地出现大量剩余状态,即未被定义的编码组合。这些状态在状态机的正常运行中是不需要出现的。剩余状 态的处理要不同程度地耗用逻辑资源,这就要求设计者在选用何种状态机结构,何种状态编码方式,何种容错技术 及系统的工作速度与资源利用率方面权衡比较,以满足自己的设计要求 1. 简述自顶向下的设计方法 答:从自然语言说明到 HDL的系统行为描述;从 HDL的系统行为描述到 RTL描述;从RTL描述到逻辑门级 描述;从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)后期设计还包括 涉及硬件实现和测试

7、。 2. 简述EDA的设计流程 答:图形输入 a原理图b.硬件描述语言C.状态图d.波形图;HDL文本输入;综合;适配;功能仿真与时序 仿真;编程下载;硬件测试 3. 简述过程语句的执行过程 答:由always引导的过程语句结构是 Verilog中最常用和最重要的语句结构。任何顺序语句都必须放在过程语 句结构中。通常要求将过程语句中所有的输入信号都放在敏感信号表中。(a.用文字or连接所有敏感信号。b.用逗 号区分或连接所有敏感信号。C.省略形式,只写成(*),或直接写成always *,显然试图通过选择性地列入敏感信 号来改变逻辑设计是无效的。)过程语句的执行依赖于敏感信号的变化(发生事件)

8、。当某一敏感信号发生变化, 过程语句被启动,内部的所有顺序语句被执行一遍,然后返回过程起始端,再次进入等待状态,直到下一次某一敏感信号发生变化再次进入 启动-运行”状态。过程语句结构是一个不断重复运行的模块。一个模块中可以包含任意 个过程语句,过程语句本身属于并行语句,而由过程引导的各类语句属于顺序语句。 IP 核。 4. 简述什么是 元件例化 答:元件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次 化的设计方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调 用,成为高层次设计模块中的一个元件。 被例化的元

9、件可以以不同的形式出现, 可以是 Verilog 设计文件,可以是 FPGA 元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是 完成赋值 (目标变量获得更新) 。阻塞赋值是 先计算驱动表达式的值,然后即刻完成赋 5. 简述阻塞赋值 语句和 非阻塞赋值 语句的过程区别 答:阻塞赋值语句的执行过程可以分成两步: 计算驱动表达式的值; 种理想化的数据传输,赋值立即发生,不存在延时。执行阻塞赋值时, 值,目标变量立即获得更新,且在此过程中其他同类赋值语句必须停止工作,即所谓“阻塞 ”。阻塞赋值语句的执 行类似于软件语言语句的执行,即具有顺序执行的特点。阻塞赋值语句的先后顺序将直接影响综合的

10、结果。在过 程中,允许对同一目标变量进行多次赋值和驱动,“=”左边目标变量的值将随赋值语句前后顺序的运算而改变。 非阻塞赋值语句的执行过程可以分成三步:计算驱动表达式的值;延时5时间;完成赋值(目标变量获得更新)。 非阻塞赋值比较接近实际电路的运行,从综合的角度考虑到电路的延时性和并行性。执行非阻塞赋值时,先计算 驱动表达式的值(理论上立即完成无需耗时),随后启动一个5延时器(5延时时间就是过程的运行时间),延时时 间到(过程执行结束) ,此时才完成赋值, 目标变量才被更新。 延时时间段允许执行其他同类赋值语句, 即所谓 “非 阻塞”。由于其他同类赋值语句驱动表达式的运算也不花费时间,所以所有

11、语句的延时起始时刻和延时时间长短是相 同的,延时时间结束,所有语句的目标变量同时被更新,可以理解成赋值语句并行执行。非阻塞赋值语句的并行 执行可以理解成:首先按顺序计算 “=”右侧表达式的值,然后经过 5延时, =左侧的目标变量同时获得更新值(同 时完成赋值)。在过程中,允许对同一目标变量进行多次赋值或驱动(作为并行语句的连续赋值语句不允许这种现 象),被赋值目标变量接受最接近过程结束的那一个驱动源数据。过程启动后,所有非阻塞和阻塞赋值语句,都必 须在一个 5 延时中完成,其中阻塞赋值在 5 延时前已按顺序完成所有赋值,但非阻塞赋值这时刚进入赋值的第一步, 且必须在5延时后同时完成赋值。如果有

12、两个过程,一个过程中全部是阻塞式赋值,一个过程中全部是非阻塞式 赋值,它们的执行周期是相同的,不会有谁比谁更快的现象。 6. 简述 if 语句 的几种主要结构 if( 条件表达式 ) begin 语句块 ; end if(条件表达式) begin 语句块 1 ; end else begin 语句块 2; end if(条件表达式1) begin 语句块 1 ; end else if(条件表达式 2) begin 语句块 2; end else if(条件表达式 n) begin 语句块 n; end else begin 语句块 n+1 ; end 答: 7.简述 Moore 型和 Mea

13、ly 型 状态机的区别 Mealy 机要多等待一个时钟周期。 答: Mealy 型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的 同步。 Moore 型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状 态发生变化时才导致输出的变化,所以比 1.8选 1数据选择器 module MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y); input a,b,c,d,e,f,g,h,s2,s1,s0; output y; reg y; always (a,b,c,d,e,f,g,h,s2,s1,s0)

14、begin : MUX81 case(s2,s1,s0) 3b000:y=a; 3b001:y=b; 3b010:y=c; 3b011:y=d; 3b100:y=e; 3b101:y=f; 3b110:y=g; 3b111:y=h; default:y=a; endcase end endmodule module mux4_1 (DIN,DOUT); if (DIN7=0) DOUT=3 b000; else if (DIN1=0) DOUT=3 b011; output 0:2 DOUT; else if (DIN6=0) DOUT= 3 b100; else DOUT=3 b111; i

15、nput 0:7 DIN; else if (DIN5=0) DOUT= 3 b010; end reg 0:2 DOUT; else if (DIN4=0) DOUT= 3 b110; endmodule always (DIN) else if (DIN3=0) DOUT= 3 b001; begin else if (DIN2=0) DOUT= 3 b101; 6.占空比为 50% 的任意奇数五分频电路 module FDIV3 (CLK,K_OR,K1,K2); else C1=C1+1; if(C2=1) M2=M2; input CLK; if(C1=1) M1=M1; else

16、if(C2=3) M2=M2; output K_OR,K1,K2; else if(C1=3) M1=M1; end reg 2:0 C1,C2; end assign K1=M1; 5.优先编码器( 8-3 线) assign K2=M2; assign K_OR=M1|M2; endmodule reg M1,M2; always (posedge CLK) begin if(C1=4) C1=0; always(negedge CLK) begin if(C2=4) C2=0; else C2=C2+1; module MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y

17、); input a,b,c,d,e,f,g,h,s2,s1,s0; output y; reg 2:0 sel; reg y; always (a,b,c,d,e,f,g,h,sel) begin sel=s2,s1,s0; if(sel=0) y=a; else if(sel=1) y=b; else if(sel=2) y=c; else if(sel=3) y=d; else if(sel=4) y=e; else if(sel=5) y=f; else if(sel=6) y=g; else y=h; end endmodule 2.一位全加器 module h_adder(a,b,

18、so,co); input a,b; output so,co; assign co,so=a+b; endmodule module or2a(a,b,c); output c; input a,b; assign c=a|b; endmodule module f_adder(ain,bin,cin,cout,sum); output cout,sum; input ain,bin,cin; wire e,d,f; h_adder u1(ain,bin,e,d); h_adder u2(.a(e),.so(sum),.b(cin),.co(f); or2a u3(.a(d),.b(f),.

19、c(cout); endmodule 3.十进制计数器(异步复位 ,同步计数使能 module CNT10 (CLK, RST, EN,LOAD, COUT,DOUT,DATA); input CLK,EN,RST,LOAD; input 3:0 DATA; output3:0 DOUT; output COUT; reg3:0 Q1; ,可预置型) reg COUT; assign DOUT=Q1; always (posedge CLK negedge RST)begin if (!RST) Q1=0; else if(EN) begin if(!LOAD) Q1=DATA; or els

20、e if(Q19) Q1=Q1+1; else Q1=4 b0000;end end always (Q1) if(Q1=4 h9) COUT=1 else COUT=1 b0; endmodule b1; 4.移位寄存器 (8 位右移 ) module SHFT1 (CLK, LOAD,DIN,QB); output QB; input CLK,LOAD; input 7:0 DIN; reg 7:0 REG8; always (posedge CLK) begin if(LOAD) REG8=DIN; else REG86:0=REG87:1;end assign QB=REG80; en

21、dmodule 7.序列检测器的状态机设计 (8 位 11010011)(Moore 型、 mealy 型) module SCHK(CLK,DIN,RST,SOUT); input CLK,DIN,RST; output SOUT; parameter s0=40,s1=41,s2=42,s3=43,s4=44,s5=45,s6=46,s7= 47,s8=48; reg 8:0 ST,NST; always (posedge CLK or posedge RST) if(RST) ST=s0; else ST=NST; always (ST or DIN) begin case (ST )

22、s0 : if(DIN=1 b1) NST=s1;else NST=s0; s1 : if(DIN=1 b1) NST=s2;else NST=s0; s2 : if(DIN=1 s3 : if(DIN=1 s4 : if(DIN=1 s5 : if(DIN=1 s6 : if(DIN=1 s7 : if(DIN=1 s8 : if(DIN=1 b0) b1) b0) b0) b1) b1) b0) default: NST=s0; endcase NST=s3;else NST=s0; NST=s4;else NST=s0; NST=s5;else NST=s0; NST=s6;else N

23、ST=s0; NST=s7;else NST=s0; NST=s8;else NST=s0; NST=s3;else NST=s0; end assign SOUT=(ST=s8); endmodule module SCHK(CLK,DIN,RST,SOUT); input CLK,DIN,RST; output SOUT; parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; reg 8:0 ST; reg SOUT; always (posedge CLK) begin SOUT=0; if(RST) ST=s0; else be

24、gin casex (ST ) s0 : if(DIN=1 b1) ST=s1;else ST=s0; s1 : if(DIN=1 b1) ST=s2;else ST=s0; s2 : if(DIN=1 s3 : if(DIN=1 s4 : if(DIN=1 s5 : if(DIN=1 s6 : if(DIN=1 s7 : if(DIN=1 b0) b1) b0) b0) b1) b1) ST=s3;else ST=s0; ST=s4;else ST=s0; ST=s5;else ST=s0; ST=s6;else ST=s0; ST=s7;else ST=s0; ST=s8;else ST=

25、s0; s8 : begin SOUT=1; if(DIN=1 b0) ST=s3;else ST=s0; end default: ST=s0; endcase end end endmodule case(code) 3b000: result = 8h01; 3b001: result = 8h02; 3b010: result = 8h04; 3b011: result = 8h08; 3b100: result = 8h10; 1 编程实现 3-8 译码器 ,要求该译码器具有同步使能与复位功能 module dec38( input 2:0code, output reg7:0res

26、ult ); always(*) begin ,(当复位时所有的输出为高电平 ) 3b101: result = 8h20; 3b110: result = 8h40; 3b111: result = 8h80; endcase end endmodule module decoder38( input 2:0code, output reg7:0result ); always(*) begin if(code2) if(code1) if(code0) result = 8h80; else result = 8h40; else if(code0) result = 8h20; else

27、 result = 8h10; else else if(code1) if(code0) result = 8h08; else result = 8h04; else if(code0) result = 8h02; else result = 8h01; else end endmodule 2.编程实现计数器,功能要求:31进制,递增计数,异步清零,同步预加载计数功能 module Den t(reset_ n, clk,i n_en a,c nt,carry_e na); input clk; input reset_ n; input in_ena; out put 4:0cnt;

28、 out put carry_e na; reg 4:0cnt; reg carry_e na; always (p osedge clk or n egedge reset_ n) beg in if(!reset) ent = 5b0; else if(in_e na else if (in_e na if(!reset) carry_ ina = 1b0; else if(in_e na else carry_ ina = 1b0; end always (p osedge clk or n egedge reset_ n) beg in end en dmodule assig n dout=fifo; always(p osedge clk) if(clr) fifo=0; else if(LorR) fifo=fifo6:0,di n; else fifo=di n,fifo7:1; en dmodule 3.编程实现8位移位寄存器,功能要求:同步预置移位初值,串行输出,双向移位,同步复位(复位时输出清零) module fif

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论