Verilog硬件描述语言cpu设计实例

Verilog硬件描述语言cpu设计实例
Verilog硬件描述语言cpu设计实例

VerilogHDL经典程序非常适合新手

一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0; 2'b01:y=i1; 2'b10:y=i2; 2'b11:y=i3; default:y=0; 一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0;

verilog硬件描述语言 上机

《硬件描述语言》上机作业西电微电子 \

第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。 A[0] Array B[0] A[1] B[1] A[2] B[2] 结构描述: 电路设计: module hw1(A,B,Y); input[2:0] A,B; output Y; wire w1,w2,w3; xor U1(w1,A[0],B[0]); xor U2(w2,A[1],B[1]); xor U3(w3,A[2],B[2]); nor U4(Y,w1,w2,w3); endmodule 仿真测试: module test_hw1; reg[2:0] A,B; wire Y; hw1 U1(A,B,Y); initial begin A=3'b000;B=3'b000; #50 A=3'b000;B=3'b000; #50 A=3'b111;B=3'b111; #50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000; #50 A=3'b110;B=3'b110; #50 A=3'b011;B=3'b010; #50 A=3'b001;B=3'b011; #50 A=3'b111;B=3'b010; #50 $stop; end initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule 行为描述: 电路设计: module hw2(A,B,Y); input[2:0] A,B; output Y; wire Y; assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:

专科《硬件描述语言和数字系统设计》-试卷-答案

专科《硬件描述语言和数字系统设计》 一、(共36题,共150分) 1. reg类型的数组通常用于描述存储器,reg [15: 0] MEM [0:1023];定义存储器字的位数为(2分) A.1024 B.16 C.16384 D.1040 .标准答案:B 2. 下列关于同步有限状态机的描述错误的是()(2分) A.状态变化只能发生在同一个时钟跳变沿; B.状态是否变化要根据输入信号,只要输入条件满足,就会立刻转入到下一个状态。 C.在时钟上升沿,根据输入信号的变化,确定电路状态 D.利用同步状态机可以设计出极其复杂灵活的数字逻辑电路系统 .标准答案:B 3. 关于如下描述,正确的说法是( ) (2分) A.这种描述是错误的 B.该电路不可综合 C.该电路不可综合,但生成的不是纯组合逻辑 D.以上说法都不对 .标准答案:D 4. 下列关于流水线的描述错误的是( ) (2分) A.流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法; B.设计流水线目的是提高数据吞吐率 C.流水线缩短了在一个时钟周期内给的那个信号必须通过的通路长度,从而可以提高时钟频率 D.增加流水线长度可以节省更多延迟,流水线越长,首次延迟越大,系统频率就会降低。 .标准答案:D 5. 以下关于Top-Down的设计方法不正确的描述是( ) (2分) A.Top-Down的设计方法首先从系统设计入手; B.Top-Down设计中的系统总体仿真与所选工艺有关 C.Top-Down的设计方法从顶层进行功能划分和结构设计 D.自顶向下的设计方法可以早期发现结构上的错误 .标准答案:B 6. 在verilog中,下列哪些操作一定是单bit?()(2分) A.== B.^ C.> D.&&  .标准答案:A,B,C,D 7. 下面哪些是verilog的关键字()(2分) A.input B.assign C.write D.module .标准答案:A,B,D 8. 全球主要的FPGA厂家有()(2分) A.Xilinx B.Altera C.Broadcom https://www.360docs.net/doc/5d1038876.html,ttice .标准答案:A,B,D 9. 大规模数字逻辑设计原则,正确的说法有()(2分) A.异步设计原则 B.组合时序电路分开原则 C.面向RTL的原则 D.先电路后代码的原则 .标准答案:B,C 10. 下面有关SRAM,DRAM的叙述,正确的有()(2分) A.DRAM存储单元的结构比SRAM简单 B.DRAM比SRAM成本高 C.DRAM比SRAM速度快 D.DRAM要刷新,SRAM不刷新 .标准答案:A,D 11. 阻塞赋值与非阻塞赋值的差别及其各自的使用环境。(10分)标准答案:非阻塞(non-blocking)赋值语句(b

蔡觉平老师西电Verilog HDL上机大作业(硬件描述语言)_微电子学院

《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级:******* 学号:******* 姓名:******* 题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim 软件的波形验证方式。 解答: 题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 A B

解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule

硬件描述语言08-09B卷标准答案

2008/2009 学年第一学期末考试试题答案及评分标准 (B卷) 硬件描述语言及器件 使用班级:06060241/06060242 一、填空题(30分,每空格1分) 1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。 2、VHDL程序的基本结构至少应包括实体、结构体两部分和对 库的引用声明。 3、1_Digital标识符合法吗?否, \12 @ +\ 呢?合法。 4、在VHDL的常用对象中,信号、变量可以被多次赋予不同的值, 常量只能在定义时赋值。 5、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、 Out 、 inout 、 buffer 。 6、VHDL语言中std_logic类型取值‘Z’表示高阻,取值‘X’表示不确定。 7、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。 8、位类型的初始化采用(字符/字符串)字符、位矢量用字符串。 9、进程必须位于结构体内部,变量必须定义于进程/包/子程序内部。 10、并置运算符 & 的功能是把多个位或位向量合并为一个位向量。 11、进程执行的机制是敏感信号发生跳变。 12、判断CLK信号上升沿到达的语句是 if clk’event and clk = ‘1’ then . 13、 IF 语句各条件间具有不同的优先级。

14、任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时, 其状态才发生改变。 15、 Moore 状态机输出只依赖于器件的当前状态,与输入信号无关。 二、判断对错并改正(12分,每小题3分) 1、CONSTANT T2:std_logic <= ’0’; (错)改正:把<= 换为:= 。 2、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。 (错)改正:把‘0’的单引号去掉。 3、在结构体中定义一个全局变量(V ARIABLES),可以在所有进程中使用。 (错)改正:“变量(V ARIABLES)”改为“信号”。 4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr, 可以直接对wr赋值。 (错)改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。 三、简答(8分,每小题4分) 1、简述如何利用计数器精确控制时序。 ?只要知道晶振频率f,即可知道周期T=1/f; ?使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT; ?上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生精 确时序; 例如:

Verilog语言基础知识

Verilog HDL语言基础知识 先来看两个Verilog HDL程序。 例一个8位全加器的Verilog HDL源代码 module adder8(cout,sum,ina,inb,cin); output[7:0] sum; output cout; input[7:0] ina,inb; input cin; @ assign {cout,sum}=ina+inb+cin; 模块的端口声明了模块的输人和输出口。其格式如下: module 模块名(口1,口2,口3,口4,……); 2.模块内容 模块内容包括I/O说明,信号类型声明和功能定义。 (1) I/O说明的格式如下: ; 输人口: input端口名1,端口名2,……端口名N; 输出口: output端口名l,端口名2,……端口名N; I/O说明也可以写在端口声明语句里。其格式如下: module module_name(input portl,input port2,…output portl,output port2,…); (2)信号类型声明: 它是说明逻辑描述中所用信号的数据类型及函数声明。如 ( reg[7:0] out; 数字 (1)整数

在Verilog HDL中,整数型常量(即整常数)有以下4种进制表示形式: ◇二进制整数(b或B); ◇十进制整数(d或D); ◇十六进制整数(h或H); ◇八进制整数(o或O)。 ) 完整的数字表达式为: <位宽>'<进制> <数字>, 位宽为对应二迸制数的宽度,如: 8'b nets型变量wire nets型变量指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接。Verilog HDL中提供了多种nets型变量,具体见表。 这里着重介绍wire型变量。wire是一种常用的nets型变量,wire型数据常用来表示assign语句赋值的组合逻辑信号。Verilog HDL模块中的输入/输出信号类型缺省时自动定义为wire型。Wire型信号可以用作任何方程式的输入,也可以用作assign语句和实例元件的输出,其取值为0,1,x,z。 wire型变量格式如下: & ⑴.定义宽度为1位的变量: wire 数据名1,数据名2,……数据名n; 例如:wire a,b; register型变量reg register型变量对应的是具有状态保持作用的电路元件,如触发器、寄存器等。register

硬件描述语言verilog简答题

1.assign always initial区别 always过程反复执行其中的块语句,而initial过程语句只执行一次。 assign声明用于描述组合逻辑。在always语句中,“=”表示阻塞赋值,<=表示非阻塞赋值 Assign语句应该在always语句外部使用,而且是并行计算值。在组合逻辑中使用阻塞式赋值,而在时序逻辑中需要使用非阻塞式赋值。initial语句在模拟开始时执行体内的语句, 2.触发器,锁存器,寄存器区别 触发器:包括锁存器和寄存器。锁存器:电平触发的存储单元,在有效电平时间里可以多次改变数据.优点是占触发器资源少,缺点是容易产生毛刺。在FPGA中用的很少,因为FPGA中触发器的资源非常丰富。寄存器:边沿触发的存储单元,在上升或下降沿数据变化,一个周期里只能变化一次。 3.测试程序的作用: 测试程序是用于测试其他待测试模块的硬件描述语言模块。此程序包含了向待测试模块提供输入的语句,已测试是否产生了理想的正确输出。输入和期待的输出模式成为测试向量。 4时序图定义: 答:时序图是显示了缓冲器的一个输入改变和随后输出的改变所产生的延迟的图,她描绘了输入改变时缓冲器电路的瞬间响应。 5.两种时序电路,(怎么样判断同步时序电路) 同步时序电路:如果一个由多个元件连接构成电路是同步时序电路,需满足:每一个电路元件是寄存器或组合电路,至少有一个电路元件是寄存器 所有寄存器接收同一个时钟信号,每一个环路至少包含一个寄存器 非同步时序电路称为异步电路。 6.什么是组合电路(组合电路的判断条件),什么是时序电路 答:组合电路的输出仅仅取决输入的值。时序电路的输出取决于当前的输入值和之前的输入值。组合电路没有记忆,时序电路是有记忆的。 如果一个电路由互相连接的电路组件构成,在满足以下条件时,它就是组合电路。 一,每一个电路组件本身都是组合电路 二,每一个电路节点或者是一个电路的输入,或者仅仅连接到一个电路组件的一个输出端口。 三,电路不能包含回路:进过电路的每条路径最多只能经过每个电路一次。 7.MIPS体系结构设计的四个准备/指令格式设计原则4条: 简单设计有助于规整化 加快常见功能 越小的设计越快 好的设计需要好的折中

verilog语言的综合与不可综合

Verilog的综合与不可综合 综合说明编的代码可以对应出具体的电路,不可综合说明没有对应的电路结构。不可综合的代码编译通过,只能看到输出,不能实现电路,就是不能用来制作具体的芯片。 一、基本 Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器。 二:verilog语句结构到门级的映射 1、连续性赋值:assign 连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因些连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。 2、过程性赋值: 过程性赋值只出现在always语句中。 阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。 建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。 过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。 过程性赋值语句中的任何延时在综合时都将忽略。 建议同一个变量单一地使用阻塞或者非阻塞赋值。 3、逻辑操作符: 逻辑操作符对应于硬件中已有的逻辑门 4、算术操作符: Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。 5、进位: 通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如: Wire [3:0] A,B; Wire [4:0] C; Assign C=A+B; C的最高位用来存放进位。 6、关系运算符: 关系运算符:<,>,<=,>= 和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。

硬件描述语言范例

硬件描述语言语言设计实例 1、8-3编码器 module encode_verilog ( a ,b ); input [7:0] a ; //编码器输入 wire [7:0] a ; output [2:0] b ; //编码器输出 reg [2:0] b; always @ ( a ) begin case ( a ) //编码器某一输入端口为高电平输出相应的3位二进制数 8'b0000_0001 : b<=3'b000; //0 8'b0000_0010 : b<=3'b001; //1 8'b0000_0100 : b<=3'b010; //2 8'b0000_1000 : b<=3'b011; //3 8'b0001_0000 : b<=3'b100; //4 8'b0010_0000 : b<=3'b101; //5 8'b0100_0000 : b<=3'b110; //6 8'b1000_0000 : b<=3'b111; //7 default : b<= 3'b000; //其他情况编码器输出3’b000 endcase end endmodule 2、8-3优先编码器 module p_encode_verilog ( A ,I ,GS ,EO ,EI ); //编码器以低为有效 input [7:0] I ; //编码器输入 wire [7:0] I ; input EI ; //输入使能,EI=0时,编码器正常工作 wire EI ; output [2:0] A ; //编码器输出 reg [2:0] A ; output GS ; //优先编码器工作状态标志,编码器的八个输入端有信号输入时,GS=0 reg GS ; output EO ; //输出使能, reg EO ; always @ ( I or EI ) if ( EI ) //使用if、else if表明条件的优先级顺序 begin A <= 3'b111; GS <= 1; EO <= 1; end else if ( I[7] == 0 ) begin A <= 3'b000;

关于硬件描述语言(VHDL和Verilog)概要

关于硬件描述语言【VHDL和Verilog】 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 究竟选择VHDL还是verilog HDL? 这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看人的使用习惯。如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。 学习HDL的几点重要提示 1.了解HDL的可综合性问题: HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(即程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 2. 用硬件电路设计思想来编写HDL: 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要多实践,多思考,多总结。 3.语法掌握贵在精,不在多: 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,

Verilog语言的特点

一、第一章 1.几个英文缩写: PLA(Programmable Logic Array)可编程逻辑阵列 FPGA(Field Programmable Gate Array)现场可编程逻辑门阵列 CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件 CAD(Computer Aided Design) 计算机辅助设计 CAE(computer aided engineering) EDA(electronic design automation) 电子设计自动化 2.EDA定义:以计算机为工作平台,以EDA软件为开发环境,以PLD器件或者ASIC专用 集成电路为目标器件设计实现电路系统的一种技术。 3.现代EDA技术的特征【简答】 (1)采用硬件描述语言(HDL)进行设计 HDL语言更适合于描述规模大、功能复杂的数字系统,使设计者在比较抽象的层次上对所设计系统的结构和逻辑功能进行描述。 (2)逻辑综合与优化 目前EDA工具最高只能接受行为级和RTL级描述的HDL文件进行逻辑综合 (3)开放性和标准化 普遍采用标准化和开放性的框架结构,可以与其他的EDA工具一起进行设计工作,实现各种工具的优化组合,集成在一个易于管理的统一环境下,实现资源共享提高工作效率,利于大规模设计。 (4)更完备的库(Library) 在电路设计的各个阶段,EDA系统需要不同层次、不同种类的元器件模型库的支持。EDA 工具要具有更强大的设计能力和更高的设计效率,必须配有丰富的库。各种模型库的功能和规模是衡量EDA工具优劣的一个标志 4.基于EDA技术的设计思路(P4~P5) (1)Top-down设计,即自顶向下的设计 将设计分成几个不同的层次:系统级、功能级、门级、开关级, 按照自上而下的顺序,在不同的层次上对系统进行设计和仿真。 首先从系统设计入手,在顶层进行功能框图的划分和机构设计。 在功能级进行仿真纠错,并用HDL对高层次的系统行为进行描 述,然后用综合工具将设计转化为具体门电路网表。 Top-down的设计须经过“设计—验证—修改设计—再验证”的 过程,不断反复,直到结果能够实现所要求的功能,并在速度、 功耗、价格和可靠性方面实现较为合理的平衡。 (2)Bottom-up设计,即自底向上的设计 设计者选择标准集成电路,或者将各种基本单元做成基本单元库,调用这些基本单元,直到设计出满足需要的系统。缺点:效率低、易出错 5.IP核的一些概念(intellectual property) IP核(IP模块):指功能完整,性能指标可靠,已验证的、可重用的电路功能模块。分为硬核、固核、软核。 (1)软核:如ARM。是指在寄存器级或门级对电路功能用HDL描述,表现为用VHDL 等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。 (2)硬核:以版图形式实现的设计模块,基于一定的设计工艺。供设计的最终阶段产品: 掩膜。

VerilogHDL硬件描述语言复习

VerilogHDL硬件描述语言复习 一、 1. Verilog HDL 是在哪一年首次被I E E E标准化的? 2. Verilog HDL支持哪三种基本描述方式? 3. Verilog HDL 是由哪个公司最先开发的? 4. Verilog HDL中的两类主要数据类型什么? 5. U D P代表什么? 6. 写出两个开关级基本门的名称。 7. 写出两个基本逻辑门的名称。 8. 在数据流描述方式中使用什么语句描述一个设计? 9. 采用结构描述方式描述1位全加器。 10. i n i t i a l语句与always 语句的关键区别是什么? 11. 采用数据流方式描述2 - 4译码器。 1 2. 找出下面连续赋值语句的错误。 assign Reset=#2 Sel^WriteBus; 二、 1. 下列标识符哪些合法,哪些非法? C O u n T, 1_2 M a n y, \**1, R e a l?, \wait, Initial 2. 在Verilog HDL中是否有布尔类型? 3. 如果线网类型变量说明后未赋值,其缺省值为多少?

4. Verilog HDL 允许没有显式说明的线网类型。如果是这样,怎样决定线网类型? 5. 下面的说明错在哪里? i n t e g e r [0:3] R i p p l e; 6. Verilog HDL有哪几大类数据类型? 7.Verilog HDL有哪几种寄存器类型? 三、 1. 假定长度为6 4个字的存储器, 每个字8位,编写Verilog 代码,按逆序交换存储器的内容。即 将第0个字与第6 3个字交换,第1个字与第6 2个字交换,依此类推。 2. 假定3 2位总线A d d re s s _ B u s, 编写一个表达式,计算从第11位到第2 0位的归约与非。 3. 假定一条总线C o n t ro l _ B u s [ 1 5 : 0 ],编写赋值语句将总线分为两条总线:A b u s [ 0 : 9 ]和B b u s [ 6 : 1 ]。 4. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术移位。 5. 使用条件操作符, 编写赋值语句选择N e x t S t a t e 的值。如果C u rre n t S t a t e的值为R E S E T, 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O,则N e x t S t a t e 的值为B U S Y;如果 C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T。 6. 如何从标量变量A,B,C和D中产生总线B u s

双口RAM应用实例

双端口RAM在高速数据采集中的应用 利用传统方法设计的高速数据采集系统由于集成度低、电路复杂,高速运行电路干扰大,电路可靠性低,难以满足高速数据采集工作的要求。应用FPGA可以把数据采集电路中的数据缓存、控制时序逻辑、地址译码、总线接口等电路全部集成进一片芯片中,高集成性增强了系统的稳定性,为高速数据采集提供了理想的解决方案。下面以一个高速数据采集系统为例介绍双端口RAM的应用。 该系统要求实现对频率为5MHz的信号进行采样,系统的计算处理需要对信号进行波形分析,信号采样时间为25μs。根据设计要求,为保证采样波形不失真,A/D采样频率用80MHz,采样精度为8位数据宽度。计算得出存储容量需要2K字节。其系统结构框图如图3所示,图4给出了具体电路连接图。

根据设计要求,双端口RAM的LPM_WIDTH参数设置为8,LPM_WIDTHAD 参数设置为11(211=2048),使用读写使能端及读写时钟。ADCLK、WRCLK和地址发生器的计数频率为80MHz。 A/D转换值对双端口RAM的写时序为顺序写方式,每完成一次A/D转换,存储一次数据,地址加1指向下一单元,因此写地址发生器(RAM_CONTROL)采用递增计数器实现,计数频率与ADCLK、WRCLK一致以保证数据写入时序的正确性。写操作时序由地址和时钟发生器、A/D转换时钟和双端口RAM的写时钟产生。停止采样时AD_STOP有效,写地址发生器停止计数,同时停止对RAM的写操作。将地址发生器的计数值接至DSP总线可以获取采样的首尾指针。地址发生器单元一般用(VHDL)语言编程实现,然后生成符号文件 RAM_CONTROL在上层文件调用。其部分VHDL语言程序如下: 对双端口RAM的读操作采用存储器映像方式,其读出端口接DSP的外扩RAM 总线,DSP可随机读取双端口RAM的任一单元数据,以方便波形分析。由于

EDA期末考试试题

第一部分:填空题 1.一般把EDA技术的发展分为CAD、CAE和EDA三个阶段,并向着ESDA方向发展。 2.EDA技术在应用设计领域主要包含哪四个方面的内容(1)HDL (2)PLD (3)EDA工具软件(4)EDA开发系统。 3.EDA技术的基本特征(1)自顶向下的设计方法;(2)采用硬件描述语言;(3)高层综合和优化;(4)并行工程;(5)开放性和标准化。 4.当前最流行的并成为IEEE标准的硬件描语言是V HDL和Verilog-HDL。 5.什么是PLD? 答: PLD,Programmable-Logic-Device,即可编程逻辑器件。是一种具有内建结构、由用户编程以实现某种逻辑功能的新型逻辑器件。 6.SPLD的基本结构框图是什么? 7.一般CPLD器件至少包含可编程逻辑宏单元,可编程I/O单元和可编程内部连线3种基本结构。 一般FPGA器件至少包含可编程逻辑功能块/CLB、IOB/可编程I/O块和PI/可编程内部互连三类可编程资源。 8.用PROM完成半加器/全加器的示意图。 9.使用方框图示意出采用硬件描述语言设计硬件电路进行由上而下的设计的三个层次为: 10.可编程逻辑器件的发展趋势在哪5个方面(1)向更大规模、更高集成度的片上系统方向发展(2)向低电压、低功耗的绿色器件方向发展(3)向更高速可预测延时的方向发展(4)向在PLD内嵌入多种功能模块的方向发展(5)向模数混合可编程的方向发展11.目前,在PLD器件制造与生产领域的三大公司为Altera、Xilinx和Lattice 12.FPGA的发明者是Xilinx公司;ISP编程技术的发明者是Lattice公司。 13、目前常见的可编程逻辑器件的编程和配置工艺包括基于E2PROM/Flash技术、基于 SRAM查找表的编程单元和基于反熔丝编程单元。 14、基于EPROM、E2PROM和快闪存储(flash)器件的可编程器件,在系统断电后编程信 息不丢失 15、采用SRAM结构的的可编程器件,在系统断电后编程信息丢失 16、V erilog-HDL于1983年推出,是在C语言的基础上演化而来的。 于1995年正式采纳为IEEE标准,其代号为Verilog-HDL1634-1995。 17、一个基本的Verilog-HDL程序由模块构成。 18、一个完整的Verilog-HDL设计模块包括:模块关键字和模块名、端口列表、端口定义、 和功能描述4部分。

VHDL语言的主要描述语句

VHDL语言的主要描述语句 按照语句的执行顺序对VHDL语言进行分类,包含两类语句: 并行描述语句该语句的执行与书写顺序无关,总是同时被执行 顺序描述语句从仿真的角度,该语句是顺序执行的 进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。但是进程内部的所有语句都是顺序语句。 一、顺序描述语句 顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。如下分别介绍有关的顺序描述语句. 1.WAIT语句 进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程. 等待语句的格式: *WAIT 无限等待 *WAIT ON 敏感信号变化 *WAIT UNTIL 条件满足 *WAIT FOR 时间到 (1)WAIT ON 格式:WAIT ON 信号[,信号] 例5-1 PROCESS(a,b) BEGIN y<=a AND b;

END PROCESS; 该例中的进程与下例中进程相同: 例5-1 PROCESS BEGIN y<=a AND b; WAIT ON a,b; END PROCESS; 例5-2 PROCESS(a,b) BEGIN y<=a AND b; WAIT ON a,b; END PROCESS; (2)WAIT UNTIL 直到条件满足 格式: WAIT UNTIL 布尔表达式 当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100) (3)WAIT FOR等到时间到 格式: WAIT FOR 时间表达式 当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns; WAIT FOR (a*(b+c);

范例-软件设计说明(详细部分).

软件设计说明

目录 1范围 (1) 1.1标识 (1) 1.2系统概述 (1) 1.3文档概述 (1) 2引用文档 (1) 3CSCI 级设计决策 (1) 4CSCI 体系结构设计 (2) 4.1CSCI部件 (2) 4.2执行方案 (3) 4.3接口设计 (3) 4.3.1接口标识和接口图 (3) 4.3.x (接口的项目唯一标识符) (4) 5CSCI 详细设计 (6) 5.X (软件单元的项目唯一标识符,或者一组软件单元的标志符) (6) 6需求可追踪性 (9) 7注解 (11) 附录A (11)

软件设计说明 1范围 1.1标识 要求:本节应包含这个文档所适用的系统和软件的完全标识,(若适用)应包括标识号、名称、缩略名、版本号及发布号。 1.2系统概述 要求: 1)本节主要描述本文档适用的系统和软件的用途; 2)概述系统开发、运行和维护的历史; 3)标识项目的投资方、需方、用户、开发方和保障机构; 4)标识当前和计划的运行现场; 5)列出其它有关文档。 1.3文档概述 本节应概述本文档的用途和内容,描述与它的使用有关的保密性或私密性考虑。 2引用文档 列出引用的所有文档,包括文档的编号、标题、修订版本和日期。 3CSCI 级设计决策 要求:本章应根据需要分节给出CSCI 级设计决策,即CSCI 行为设计的决策(忽略其内部实现,从用户角度出发描述系统将怎样运转以满足需求)和其它影响组成该CSCI 的软件单元的选择与设计的决策。如果在需求中所有这些决策是明确的,或者这些决策要推迟到CSCI 的软件单元的设计时指出,则本章应如实陈述。 针对关键性需求(例如对安全性、保密性、私密性等需求)作出的设计决策,应在专门的章节中加以叙述。 CSCI 级设计决策的例子如下: 1)关于CSCI 将接收的输入和将产生的输出的设计决策,包括与其它系统、HWCI、CSCI 和用户的接口(本文档的4.3.x 节指出本说明要考虑的主题); 2)有关响应每个输入或条件的CSCI 行为的设计决策,包括CSCI 要执行的动作、响应时间和其它性能特性,模型化的物理系统的说明,选定的方程式/算法/规则,以及对不允许的输入或条件进行的处理; 3)有关数据库/数据文件如何呈现给用户的设计决策(本文档的4.3.x 节标识了本说明

硬件描述语言期末复习整理

硬件描述语言期末复习整理 1、EDA:Electronic Design Automation 现代电子设计技术的核心是EDA(Electronic Design Automation)技术。 EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上完成电子系统的设计工作。 2、20世纪90年代以来,微电子工艺有了惊人的发展,工艺水平已经达到了深亚微米级(通常把0.8-0.35um称为亚微米,0.25um及其以下称为深亚微米) 3、用EDA技术设计电路可以分为不同的技术环节,每一个环节中必须有对应的软件包或专用的EDA工具独立处理。 4、EDA工具大致可以分为设计输入编辑器、仿真器、HDL综合器、适配器(或布局布线器)以及下载器等5个模块。 一般的设计输入编辑器都支持图形输入和HDL文本输入 图形输入通常包括原理图输入、状态图输入和波形图输入三种常用方法。 5、在EDA技术中仿真的地位非常重要,行为模型的表达、电子系统的建模、逻辑电路的验证以及门级系统的测试,每一步都离不开仿真器的模拟检测。 在EDA发展的初期,快速地进行电路逻辑仿真是当时的核心问题,即使在现在,各个环节的仿真仍然是整个EDA设计流程中最重要、最耗时的一个步骤。因此,仿真器的仿真速度、仿真的准确性和易用性成为衡量仿真器的重要指标。 6、硬件描述语言诞生的初衷是用于设计逻辑电路的建模和仿真 HDL综合器是将硬件描述语言转化为硬件电路的重要工具。 7、HDL综合器的输出文件一般是网表文件,是一种用于电路设计数据交换和交流的工业标准化格式的文件,或是直接用硬件描述语言HDL表达的标准格式的网表文件,或是对应FPGA/CPLD器件厂商的网表文件。 8、电路网表(逻辑图)由元件名N、模型M、输入端信号PI、输出端信号PO四部分组成,是唯一确定电路连接关系的数据结构。即:E=(N,M,PI,PO) 9、常用的编程语言 C、Pascal、Fortran、Basic或汇编语言-算法研究 硬件描述语言-设计和制造硬件逻辑专用电路 10、实时系统不能采用通用计算机系统,自行设计非常轻便小巧的高速专用硬件系统来完成该任务。 11、FPGA-用高密度的FPGA(从几万门、几十万门到几百万门)来构成完成算法所需的电路系统是一种较好的办法。 FPGA是一种通用的器件,它的基本结构决定了对某一种特殊应用,性能不如专用的ASIC 电路。 专用集成电路-利用现成的微处理机IP核或根据某一特殊应用设计的微处理机核(也可以没有微处理机核),并结合专门设计的高速ASIC运算电路,能设计出性能价格比最高的理想数字信号处理系统。 12、传统的设计方法:查用器件手册;选用合适的微处理器和电路芯片;设计面包板和线路板;调试;定型;设计复杂的系统(几十万门以上)极其困难。 13、美国和中国台湾地区逻辑电路设计和制造厂家大都以Verilog HDL为主。 1、可编程逻辑器件(PLD)是一种能将数字系统实现在硬件电路上的设备,即能在现场规

VHDL语言程序设计中INOUT端口的使用与实例分析

目录 1、双向电路的基本格式 (2) 2、控制条件 (3) 2.1、双向信号作一个信号的输入,作另一信号的输出 (3) 2.2、双向信号既做输出又做输出 (4) 3、实例说明-INOUT端口仿真暨三态门仿真 (6) 3.1、三态门的原理与仿真三态总线 (6) 3.3、VHDL 的三态门实现与仿真 (7) 参考文献 (12)

VHDL语言程序设计中INOUT端口的使用与实例分析 摘要:VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。与另外一门硬件描述语言Verilog HDL相比,VHDL 更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL 具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会用到前四种。本文主要讨论讨论如何正确使用INOUT端口。 关键词:VHDL;INOUT端口;三态门原理 1、双向电路的基本格式 工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为inout类型,在构造体需要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看双向电路的基本格式: ENTITY bidir_pin IS ( bidir : INOUT std_logic; oe, clk, from_core : IN std_logic; to_core : OUT std_logic; …… END bidir_pin; ARCHITECTURE behavior OF bidir_pin IS BEGIN

中北大学硬件描述语言期末考试试卷及标准答案

中北大学 试题答案及评分标准 硬件描述语言及器件课程 (课程名称须与教学任务书相同) 20xx/20xx 学年第一学期 试题类别 A 拟题日期拟题教师 课程编号教师编号 使用班级 备注:试题答案要求按指定规格计算机打印,并将其文本与电子稿一并上交: ①校级考试课程交评估与考试中心命题科; ②院级考试课程交院教务科。

20xx/20xx 学年第一学期末考试试题答案及评分标准 (A卷) 硬件描述语言及器件 使用班级: xxxx 一、填空题(20分,每空格1分) 1、VHDL语言中标识符通常分为短标识符,扩展标识符两种。 2、VHDL对象包含常量,信号,变量,文件 4个基本数据类型。 3、VHDL语言中,数据类型常量说明的一般格式为: CONSTANT常数名:数据类型:=表达式;。 4、VHDL中位矢量类型表达为 bit ,位向量类型表达为 bit_vector() 。 5、VHDL语言有类型标记法,函数转换法,常数转换法 3种不同类型的数据变换方法。 6、VHDL中,设D0为“1001”, D1为'0', D2为“0110”。D0 & D1的运算结果是“10010”,D0 & D2的运算结果是“10010110”。 7、VHDL语言中包括四种运算操作符,分别是逻辑运算符,算术运算符,关系运算符,和并置运算符。 8、为了启动进程,VHDL语言中必须包含一个显示的敏感信号量表或者包含一个wait语句。

二、判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确判断依据3分) 1、进程之间的通信可以通过变量传递来实现。(×) 进程之间的通信需通过信号传递实现。 2、VHDL语言的高速性体现在其进程之内的带入语句都是并行执行的。(×) 进程之内的带入语句是顺序执行的。 3、语句y <= a when s=”00” else b when s=”01” else c when s=”10” else d; 中,s=”00”条件的优先级最高(√) 4、com1:u1 PORT MAP(a => n1,b => n2,c => m);语句中采用了位置映射的信号端口映射方式。(×) 采用的是名称映射方式

相关文档
最新文档