EDAVerilogHDL复习提纲.docx

上传人:牧羊曲112 文档编号:3156150 上传时间:2023-03-11 格式:DOCX 页数:11 大小:42.48KB
返回 下载 相关 举报
EDAVerilogHDL复习提纲.docx_第1页
第1页 / 共11页
EDAVerilogHDL复习提纲.docx_第2页
第2页 / 共11页
EDAVerilogHDL复习提纲.docx_第3页
第3页 / 共11页
EDAVerilogHDL复习提纲.docx_第4页
第4页 / 共11页
EDAVerilogHDL复习提纲.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《EDAVerilogHDL复习提纲.docx》由会员分享,可在线阅读,更多相关《EDAVerilogHDL复习提纲.docx(11页珍藏版)》请在三一办公上搜索。

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

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

3、其逻辑功能 8.两种可编程逻辑结构是基于与-或阵列可编程结构、基于SRAM查找表的可编程逻辑结构 9.PLD按集成度分类:简单PLD、复杂PLD;按结构分类:基于 “与-或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM型、Flash型 10.四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定,与阵列可编程;GAL是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元 11.CPLD的组成结构:逻辑阵列块、扩展乘积项、可编程连线阵列、I/O控制块 12.FPGA的组成结构:

4、逻辑阵列块LAB、嵌入式存储器块、嵌入式硬件乘法器、I/O单元和PLL等模块 13.Verilog的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout 14.Verilog中常用有两种变量:寄存器型变量、网线型变量 15.Verilog有两种赋值方式:阻塞式赋值、非阻塞式赋值 16.Verilog有四种循环语句:for语句、repeat语句、while语句、forever语句 17.Verilog的描述风格:RTL描述 、数据流描述、行为描述、结构描述 18.从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机;从状态机

5、的描述结构上分,有单过程状态机和多过程状态机;从状态机表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。 19.状态机结构通常包含说明部分、主控时序过程、主控组合过程、辅助过程等几个部分 20.非法状态是在状态机设计中,使用枚举类型和直接指定状态编码的程序中,特别是使用了一位热编码方式后,总是不可避免地出现大量剩余状态,即未被定义的编码组合。这些状态在状态机的正常运行中是不需要出现的。剩余状态的处理要不同程度地耗用逻辑资源,这就要求设计者在选用何种状态机结构,何种状态编码方式,何种容错技术及系统的工作速度与资源利

6、用率方面权衡比较,以满足自己的设计要求 1.简述自顶向下的设计方法 答:从自然语言说明到HDL的系统行为描述;从HDL的系统行为描述到RTL描述;从RTL描述到逻辑门级描述;从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)后期设计还包括涉及硬件实现和测试。 2.简述EDA的设计流程 答:图形输入:a.原理图b.硬件描述语言c.状态图d.波形图;HDL文本输入;综合;适配;功能仿真与时序仿真;编程下载;硬件测试 3.简述过程语句的执行过程 答:由always引导的过程语句结构是Verilog中最常用和最重要的语句结构。任何顺序语句都必须放在过程语句结构中。通常要求

7、将过程语句中所有的输入信号都放在敏感信号表中。(a.用文字or连接所有敏感信号。b.用逗号区分或连接所有敏感信号。c.省略形式,只写成(*),或直接写成 always * ,显然试图通过选择性地列入敏感信号来改变逻辑设计是无效的。)过程语句的执行依赖于敏感信号的变化。当某一敏感信号发生变化,过程语句被启动,内部的所有顺序语句被执行一遍,然后返回过程起始端,再次进入等待状态,直到下一次某一敏感信号发生变化再次进入“启动-运行”状态。过程语句结构是一个不断重复运行的模块。一个模块中可以包含任意个过程语句,过程语句本身属于并行语句,而由过程引导的各类语句属于顺序语句。 4.简述什么是元件例化 答:元

8、件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次化的设计方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调用,成为高层次设计模块中的一个元件。被例化的元件可以以不同的形式出现,可以是Verilog设计文件,可以是FPGA元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是IP核。 5.简述阻塞赋值语句和非阻塞赋值语句的过程区别 答:阻塞赋值语句的执行过程可以分成两步:计算驱动表达式的值;完成赋值。阻塞赋值是一种理想化的数据传输,赋值立即发生,不存在延时。执行阻塞赋值时,先计算驱动表达式的值,然后即刻

9、完成赋值,目标变量立即获得更新,且在此过程中其他同类赋值语句必须停止工作,即所谓“阻塞”。阻塞赋值语句的执行类似于软件语言语句的执行,即具有顺序执行的特点。阻塞赋值语句的先后顺序将直接影响综合的结果。在过程中,允许对同一目标变量进行多次赋值和驱动,“=”左边目标变量的值将随赋值语句前后顺序的运算而改变。 非阻塞赋值语句的执行过程可以分成三步:计算驱动表达式的值;延时时间;完成赋值。非阻塞赋值比较接近实际电路的运行,从综合的角度考虑到电路的延时性和并行性。执行非阻塞赋值时,先计算驱动表达式的值,随后启动一个延时器,延时时间到,此时才完成赋值,目标变量才被更新。延时时间段允许执行其他同类赋值语句,

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

11、中全部是阻塞式赋值,一个过程中全部是非阻塞式赋值,它们的执行周期是相同的,不会有谁比谁更快的现象。 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型和Mealy型状态机的区别 答:Mealy型状态机的输出是当前状态和所有输入信号的函数

12、,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。 1.8选1数据选择器 module case(s2,s1,s0) 3b110:y=g; MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y); 3b000:y=a; 3b111:y=h; input a,b,c,d,e,f,g,h,s2,s1,s0; 3b001:y=b; default:y=a; output y; 3b010:y=c; endcase

13、reg y; 3b011:y=d; end always (a,b,c,d,e,f,g,h,s2,s1,s0) 3b100:y=e; endmodule begin : MUX81 3b101:y=f; module begin else if(sel=5) y=f; MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y); sel=s2,s1,s0; else if(sel=6) y=g; input a,b,c,d,e,f,g,h,s2,s1,s0; if(sel=0) y=a; else y=h; output y; else if(sel=1) y=b; end reg

14、2:0 sel; else if(sel=2) y=c; endmodulereg y; else if(sel=3) y=d; always (a,b,c,d,e,f,g,h,sel) else if(sel=4) y=e; 2.一位全加器 module h_adder(a,b,so,co); input a,b; h_adder u1(ain,bin,e,d); input a,b; assign c=a|b; h_adder output so,co; endmodule u2(.a(e),.so(sum),.b(cin),.co(f); assign co,so=a+b; module

15、 f_adder(ain,bin,cin,cout,sum); or2a u3(.a(d),.b(f),.c(cout); endmodule output cout,sum; endmodulemodule or2a(a,b,c); input ain,bin,cin; output c; wire e,d,f; 3.十进制计数器 module CNT10 (CLK, RST, reg COUT; else if(Q19) Q1=Q1+1; EN,LOAD, COUT,DOUT,DATA); assign DOUT=Q1; else Q1=4b0000;end input CLK,EN,RS

16、T,LOAD; always (posedge CLK or end input 3:0 DATA; negedge RST)begin always (Q1) output3:0 DOUT; if (!RST) Q1=0; if(Q1=4h9) COUT=1b1; output COUT; else if(EN) begin else COUT=1b0; reg3:0 Q1; if(!LOAD) Q1=DATA; endmodule 4.移位寄存器(8位右移) module SHFT1 (CLK, LOAD,DIN,QB); always (posedge CLK) begin output

17、 QB; if(LOAD) REG8=DIN; input CLK,LOAD; else REG86:0=REG87:1;end input 7:0 DIN; assign QB=REG80; reg 7:0 REG8; endmodule 5.优先编码器 module mux4_1 (DIN,DOUT); if (DIN7=0) DOUT=3b000; else if (DIN1=0) DOUT=3b011; output 0:2 DOUT; else if (DIN6=0) DOUT=3b100; else DOUT=3b111; input 0:7 DIN; else if (DIN5=

18、0) DOUT=3b010; end reg 0:2 DOUT; else if (DIN4=0) DOUT=3b110; endmodule always (DIN) else if (DIN3=0) DOUT=3b001; begin else if (DIN2=0) DOUT=3b101; 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 if(C2=3) M2=M2; output K_OR,K1,K2; els

19、e if(C1=3) M1=M1; end reg 2:0 C1,C2; end assign K1=M1; reg M1,M2; always(negedge CLK) begin assign K2=M2; always (posedge CLK) begin if(C2=4) C2=0; assign K_OR=M1|M2; if(C1=4) C1=0; else C2=C2+1; endmodule 7.序列检测器的状态机设计(8位11010011)(Moore型、mealy型) module SCHK(CLK,DIN,RST,SOUT); s2 : if(DIN=1b0) NST=s

20、3;else NST=s0; input CLK,DIN,RST; s3 : if(DIN=1b1) NST=s4;else NST=s0; output SOUT; s4 : if(DIN=1b0) NST=s5;else NST=s0; parameter s0=40,s1=41,s2=42,s3=43,s4=44,s5=45,s6=46,s7=s5 : if(DIN=1b0) NST=s6;else NST=s0; 47,s8=48; s6 : if(DIN=1b1) NST=s7;else NST=s0; reg 8:0 ST,NST; s7 : if(DIN=1b1) NST=s8;

21、else NST=s0; always (posedge CLK or posedge RST) s8 : if(DIN=1b0) NST=s3;else NST=s0; if(RST) ST=s0; default: NST=s0; else ST=NST; endcase always (ST or DIN) begin end case (ST ) assign SOUT=(ST=s8); s0 : if(DIN=1b1) NST=s1;else NST=s0; endmodules1 : if(DIN=1b1) NST=s2;else NST=s0; module SCHK(CLK,D

22、IN,RST,SOUT); s2 : if(DIN=1b0) ST=s3;else ST=s0; input CLK,DIN,RST; s3 : if(DIN=1b1) ST=s4;else ST=s0; output SOUT; s4 : if(DIN=1b0) ST=s5;else ST=s0; parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; s5 : if(DIN=1b0) ST=s6;else ST=s0; reg 8:0 ST; s6 : if(DIN=1b1) ST=s7;else ST=s0; reg SOUT; s

23、7 : if(DIN=1b1) ST=s8;else ST=s0; always (posedge CLK) begin s8 : begin SOUT=1; SOUT=0; if(DIN=1b0) ST=s3;else ST=s0; end if(RST) ST=s0; else begin default: ST=s0; casex (ST ) endcase end s0 : if(DIN=1b1) ST=s1;else ST=s0; end s1 : if(DIN=1b1) ST=s2;else ST=s0; endmodule 1编程实现3-8译码器,要求该译码器具有同步使能与复位功

24、能,(当复位时所有的输出为高电平) module dec38( case(code) 3b101: result = 8h20; input 2:0code, 3b000: result = 8h01; 3b110: result = 8h40; output reg7:0result 3b001: result = 8h02; 3b111: result = 8h80; ); 3b010: result = 8h04; endcase always(*) 3b011: result = 8h08; end begin 3b100: result = 8h10; endmodule modul

25、e decoder38( result = 8h40; else input 2:0code, else result = 8h04; output reg7:0result if(code0) else ); result = 8h20; if(code0) always(*) else result = 8h02; begin result = 8h10; else if(code2) else result = 8h01; if(code1) else else if(code0) if(code1) result = 8h80; if(code0) end else result =

26、8h08; endmodule 2.编程实现计数器,功能要求:31进制,递增计数,异步清零,同步预加载计数功能 module reset_n) begin if(!reset) Dcnt(reset_n,clk,in_ena,cnt,carry_ena); if(!reset) carry_ina = 1b0; input clk; cnt = 5b0; else if(in_ena & cnt=5d31) input reset_n; else if(in_ena & cnt=5d31) carry_ina = 1b1; input in_ena; cnt = 5b0; else outpu

27、t 4:0cnt; else if (in_ena & cnt 5d31) carry_ina = 1b0; output carry_ena; cnt = cnt + 1b1; end reg 4:0cnt; end endmodulereg carry_ena; always(posedge clk or negedge always(posedge clk or negedge reset_n) begin 3.编程实现8位移位寄存器,功能要求:同步预置移位初值,串行输出,双向移位,同步复位(复位时输出清零) module fifo(clr,clk,din,LorR,dout) assi

28、gn dout=fifo; if(LorR) input clr,clk,din; always( posedge clk) fifo=fifo6:0,din; input LorR; if(clr) else output 7:0dout; fifo=0; fifo=din,fifo7:1; reg 7:0 fifo; else endmodule 4.完成如下状态机的设计 现态 00 S0 S1 S2 S3 S0 S1 S2 S0 次态 输入input 01 S1 S2 S3 S0 10 S1 S2 S3 S0 11 S1 S2 S3 S3 0001 0010 0100 1000 if(s

29、tate_inputs=2b00) next_state=S2; else next_state=S3; end S0:begin comb_outputs=8; if(state_inputs=2b11) next_state=S3; else next_state=S0; end endcase end endmodule输出 module FSM_EXP(clk,reset,state_inputs,comb_outputs); input clk,reset; input 1:0 state_inputs; output 3:0 comb_outputs; reg 3:0 comb_o

30、utputs; parameter S0=0,S1=1,S2=2,S3=3; reg 4:0 c_st,next_state; always (posedge clk or negedge reset) begin if(!reset) c_st=S0; else c_st=next_state;end always (c_st or state_inputs) begin case(c_st) S0:begin comb_outputs=1; if(state_inputs=2b00) next_state=S0; else next_state=S1; end S1:begin comb_outputs=2; if(state_inputs=2b00) next_state=S1; else next_state=S2; end S2:begin comb_outputs=4;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号