当前位置:文档之家› 硬件描述语言范例

硬件描述语言范例

硬件描述语言范例
硬件描述语言范例

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

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;

GS <= 0;

EO <= 1;

end

else if ( I[6] == 0 )

begin

A <= 3'b001;

GS <= 0;

EO <= 1;

end

else if ( I[5] == 0 )

begin

A <= 3'b010;

GS <= 0;

EO <= 1;

end

else if ( I[4] == 0 )

begin

A <= 3'b011;

GS <= 0;

EO <= 1;

end

else if ( I[3] == 0 )

begin

A <= 3'b100;

GS <= 0;

EO <= 1;

end

else if ( I[2] == 0 )

begin

A <= 3'b101;

GS <= 0;

EO <= 1;

end

else if ( I[1] == 0 )

begin

A <= 3'b110;

GS <= 0;

EO <= 1;

end

else if ( I[0] == 0 )

begin

A <= 3'b111;

GS <= 0;

EO <= 1;

end

else if ( I == 8'b11111111)

begin

A <= 3'b111;

GS <= 1;

EO <= 0;

end

endmodule

3、3-8译码器

module decoder_verilog ( G1 ,Y ,G2 ,A ,G3 ); input G1 ; //使能输入,高有效

wire G1 ;

input G2 ; //使能输入,低有效

wire G2 ;

input [2:0] A ; //3位译码器输入,为高有效wire [2:0] A ;

input G3 ; //使能输入

wire G3 ; //使能输入,低有效

output [7:0] Y ; //8位译码器输出,为低有效reg [7:0] Y ;

reg s;

always @ ( A ,G1, G2, G3)

begin

s <= G2 | G3 ;

if ( G1 == 0) //G1为低有效

Y <= 8'b1111_1111;

else if ( s)

Y <= 8'b1111_1111;

else

case ( A )

3'b000 : Y<= 8'b1111_1110;

3'b001 : Y<= 8'b1111_1101;

3'b010 : Y<= 8'b1111_1011;

3'b011 : Y<= 8'b1111_0111;

3'b100 : Y<= 8'b1110_1111;

3'b101 : Y<= 8'b1101_1111;

3'b110 : Y<= 8'b1011_1111;

3'b111 : Y<= 8'b0111_1111;

endcase

end

endmodule

4、数据选择器

module mux8_1_verilog ( Y ,A ,D0, D1,

D2, D3, D4, D5, D6, D7 ,G );

input [2:0] A ; //地址输入端

wire [2:0] A ;

input D0 ; //数据输入端

input D1 ; //数据输入端

input D2 ; //数据输入端

input D3 ; //数据输入端

input D4 ; //数据输入端

input D5 ; //数据输入端

input D6 ; //数据输入端

input D7 ; //数据输入端

input G ; //使能端,当G=1时Y=0,当G=0时数据选择器正常工作

wire G ;

output Y ; //数据输出端

reg Y ;

always @(G or A or D0 or D1 or D2 or D3

or D4 or D5 or D6 or D7 )

begin

if (G == 1) //使能端的优先级高

Y <= 0;

else

case (A ) //根据输入的地址A确定数据选择器输出哪路输入数据3'b000 : Y = D0 ;

3'b001 : Y = D1 ;

3'b010 : Y = D2 ;

3'b011 : Y = D3 ;

3'b100 : Y = D4 ;

3'b101 : Y = D5;

3'b110 : Y = D6 ;

3'b111 : Y = D7 ;

default : Y = 0;

endcase

end

endmodule

5、多位数值比较器

module compare_verilog ( Y ,A ,B );

input [3:0] A ; //4位二进制数A

wire [3:0] A ;

input [3:0] B ; //4位二进制数B

wire [3:0] B ;

output [2:0] Y ; //A与B大小的比较结果

reg [2:0] Y ;

always @ ( A or B )

begin

if ( A > B )

Y <= 3'b001; //A > B时Y输出3'b001 else if ( A == B)

Y <= 3'b010; //A = B时Y输出3'b010 else

Y <= 3'b100; //A < B时Y输出3'b100 end

endmodule

6、全加器

module sum_verilog ( A ,Co ,B ,S ,Ci );

input A ; //输入加数A

wire A ;

input B ; //输入加数B

wire B ;

input Ci ; //相邻低位的进位输入信号

wire Ci ;

output Co ; //向相邻高位的进位输出信号

reg Co ;

output S ; //相加和数输出

reg S ;

always @ ( A or B or Ci)

begin

if ( A== 0 && B == 0 && Ci == 0 )

begin

S <= 0;

Co <= 0;

end

else if ( A== 1 && B == 0 && Ci == 0 )

begin

S <= 1;

Co <= 0;

end

else if ( A== 0 && B == 1 && Ci == 0 )

begin

S <= 1;

Co <= 0;

end

else if ( A==1 && B == 1 && Ci == 0 )

begin

S <= 0;

Co <= 1;

end

else if ( A== 0 && B == 0 && Ci == 1 )

begin

S <= 1;

Co <= 0;

end

else if ( A== 1 && B == 0 && Ci == 1 )

begin

S <= 0;

Co <= 1;

end

else if ( A== 0 && B == 1 && Ci == 1 )

begin

S <= 0;

Co <= 1;

end

else

begin

S <= 1;

Co <= 1;

end

end

endmodule

7、D触发器

module Dflipflop ( Q ,CLK ,

RESET ,SET ,D ,Qn );

input CLK ; //D触发器输入时钟

wire CLK ;

input RESET ; //D触发器清零输入

wire RESET ;

input SET ; //D触发器预置数输入

wire SET ;

input D ; //D触发器输入

wire D ;

output Q ; //D触发器输出

reg Q ;

output Qn ;

wire Qn ;

assign Qn = ~Q ; //将D触发器输出取反

always @ ( posedge CLK or negedge SET or negedge RESET ) begin

if ( !RESET) //RESET下降沿将D触发器输出清零Q <= 0 ;

else if ( ! SET) //SER下降沿将D触发器输出置1 Q <= 1;

else Q <= D; //CLK上升沿D触发器输出等于输入end

endmodule

8、寄存器

module reg8 ( clr ,clk ,DOUT ,D );

input clr ; //异步清零信号,高有效

wire clr ;

input clk ; //时钟输入

wire clk ;

input [7:0] D ; //寄存器数据输入

wire [7:0] D ;

output [7:0] DOUT ; //寄存器数据输出

reg [7:0] DOUT ;

always @ ( posedge clk or posedge clr)

begin

if ( clr == 1'b1)

DOUT <= 0;

else DOUT <= D ;

end

endmodule

9、双向移位寄存器

module shiftdata ( left_right ,load ,clr ,clk ,

DIN ,DOUT );

input left_right ; // 左移右移控制信号

wire left_right ;

input load ; //异步置数信号,有效时将DIN输入

wire load ;

input clr ; //异步清零信号,高有效

wire clr ;

input clk ; //时钟输入

wire clk ;

input [3:0] DIN ; //并行输入

wire [3:0] DIN ;

output [3:0] DOUT ; //并行输出

wire [3:0] DOUT ; // DOUT是一个wire型变量,不能在always块中被赋值reg [3:0] data_r; //所以定义一个寄存器型变量data_r作为中间变量

assign DOUT = data_r ;

always @ ( posedge clk or posedge clr

or posedge load )

begin

if ( clr == 1) //异步清零

data_r <= 0;

else if (load ) //异步置数

data_r <= DIN;

else begin

if ( left_right) //left_right=1,信号左移

begin

data_r <= (data_r<<1);

data_r[0] <= 0; //移出位补0

end

else begin //left_right=0,信号右移

data_r <= (data_r>>1);

data_r[3] <= 0; //移出位补0

end

end

end

endmodule

10、4位二进制加减法计数器

module counter4 ( load ,clr ,c ,DOUT ,

clk, up_down ,DIN);

input load ; //异步预置数

input clk; //输入时钟

wire load ;

input clr ; //异步清零

wire clr ;

input up_down ; //加减计数,up_dpwn=1加计数,up_down=0减计数wire up_down ;

input [3:0] DIN ; //预置数输入

wire [3:0] DIN ;

output c ; //进位/借位输出,可以用于计数器的级联

reg c ;

output [3:0] DOUT ; //计数输出

wire [3:0] DOUT ;

reg [3:0] data_r;

assign DOUT = data_r;

always @ ( posedge clk or posedge clr

or posedge load)

begin

if ( clr == 1) //异步清零

data_r <= 0;

else if ( load == 1) //异步预置

data_r <= DIN;

else begin if ( up_down ==1) //加计数

begin

if ( data_r == 4'b1111) begin

data_r <= 4'b0000;

c = 1;

end

else begin

data_r <= data_r +1;

c = 0 ;

end

end

else //减计数

begin

if ( data_r == 4'b0000) begin

data_r <= 4'b1111;

c = 1;

end

else begin

data_r <= data_r -1;

c = 0 ;

end

end

end

end

endmodule

11、十进制加减法计数器

module counter10 ( load ,clr ,c ,DOUT ,clk,

up_down ,DIN ,seven_seg);

input load ; //异步预置数

input clk; //输入时钟

wire load ;

input clr ; //异步清零

wire clr ;

input up_down ; //加减计数,up_dpwn=1加计数,up_down=0减计数wire up_down ;

input [3:0] DIN ; //预置数输入

wire [3:0] DIN ;

output c ; //进位/借位输出,可以用于计数器的级联

reg c ;

output [3:0] DOUT ; //计数输出

output [7:0] seven_seg; //7段数码管

wire [3:0] DOUT ;

reg [3:0] data_r;

assign DOUT = data_r;

always @ ( posedge clk or posedge clr

or posedge load)

begin

if ( clr == 1) //异步清零

data_r <= 0;

else if ( load == 1) //异步预置

data_r <= DIN;

else if ( up_down ==1 & data_r == 9) //加进位

begin

c = 1;

data_r <= 4'b0000;

end

else if ( up_down ==0 & data_r == 0) //减借位

begin

c = 1;

data_r <= 9;

end

else

begin

if (up_down ==1) begin //加计数

data_r <= data_r +1;

c = 0 ;

end

else begin //减计数

data_r <= data_r -1 ;

c = 0 ;

end

end

end

/************数码管***************/

assign seven_seg =Y_r;

reg [7:0] Y_r;

always @(data_r ) //用7段数码管显示计数输出begin

Y_r =8'b11111111;

case (data_r )

4'b0000: Y_r = 8'b00000011; //显示0

4'b0001: Y_r = 8'b10011111; //显示1

4'b0010: Y_r = 8'b00100101; //显示2

4'b0011: Y_r = 8'b00001101; //显示3

4'b0100: Y_r = 8'b10011001; //显示4

4'b0101: Y_r = 8'b01001001; //显示5

4'b0110: Y_r = 8'b01000001; //显示6

4'b0111: Y_r = 8'b00011111; //显示7

4'b1000: Y_r = 8'b00000001; //显示8

4'b1001: Y_r = 8'b00001001; //显示9

default: Y_r = 8'b11111111; //默认数码管不发光

endcase

end

endmodule

12、顺序脉冲发生器

module pulsegen ( Q ,clr ,clk);

input clr ; //异步预置数

wire clr ;

input clk ; //时钟输入

wire clk ;

output [7:0] Q ;//顺序脉冲输出

wire [7:0] Q ;

reg [7:0] temp ;

reg x;

assign Q =temp;

always @ ( posedge clk or posedge clr )

begin

if ( clr==1)

begin

temp <= 8'b00000001; //temp寄存预定的序列

x= 0 ;

end

else

begin

x<= temp[7] ; //序列最高位输出

temp <= temp<<1 ; //temp左移一位

temp[0] <=x; //将输出的结果赋给序列最低位,实现序列的循环输出end

end

endmodule

13、序列信号发生器

module xlgen ( Q ,clk ,res);

input clk ; //时钟输入

wire clk ;

input res ; //异步预置数

wire res ;

output Q ; //序列信号输出

reg Q ;

reg [7:0] Q_r ;

always @( posedge clk or posedge res)

begin

if (res ==1)

begin

Q <= 1'b0;

Q_r <= 8'b11100100 ;//Q_r寄存预定的序列

end

else

begin

Q <= Q_r[7]; //序列最高位输出

Q_r <= Q_r<<1; //Q_r左移一位

Q_r[0] <=Q; //将输出的结果赋给序列最低位,实现序列的循环输出

end

end endmodule

14、分频器

module clockdiv ( Q ,rst ,sysclk ,sel );

input rst ; //系统复位

wire rst ;

input sysclk ; //系统时钟输入

wire sysclk ;

input [1:0] sel ; //分频倍数选择

wire [1:0] sel ;

output Q ; //分频器输出

wire Q ;

reg [2:0] q;

reg [31:0] cnt ;

reg clk ;

//时钟分频模块

always @( posedge sysclk or negedge rst)

begin

if ( !rst ) begin

cnt <= 0 ;

clk <= 1'b1 ;

end

else begin

cnt <= cnt + 1'b1 ;

if (cnt >= 32'd2500000 ) begin /clk时钟周期是系统时钟周期的5000000倍clk <= ~clk;

cnt <= 0 ;

end

end

end

//分频器模块

always @ ( posedge clk or negedge rst )

if ( !rst ) q[0] <= 0;

else q[0] <= ~q[0] ; // q[0]是clk的2分频

always @ ( posedge q[0] or negedge rst )

if ( !rst ) q[1] <= 0;

else q[1] <= ~q[1] ; // q[1]是clk的4分频

always @ ( posedge q[1] or negedge rst )

if ( !rst ) q[2] <= 0;

else q[2] <= ~q[2] ; // q[2]是clk的8分频

assign Q = (sel== 2'd0) ? clk : //分频器输出clk

(sel== 2'd1) ? q[0] : //分频器输出clk的二分频

(sel== 2'd2) ? q[1] : //分频器输出clk的四分频

(sel== 2'd3) ? q[2] : 0; //分频器输出clk的八分频

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.doczj.com/doc/2c6904792.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

硬件描述语言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简答题

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

硬件描述语言范例

硬件描述语言语言设计实例 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;

双口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部分。

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

软件设计说明

目录 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);语句中采用了位置映射的信号端口映射方式。(×) 采用的是名称映射方式

Verilog语言基础教程

Verilog HDL Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象 设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 =============================== 中文版Verilog HDL简明教程:第1章简介 Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 历史 Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模

经典的综述硬件描述语言

硬件描述语言[浏览次数:约491次] ?硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。 利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目录 ?硬件描述语言的概述 ?硬件描述语言的结构 ?硬件描述语言的优点 ?硬件描述语言的用途 ?硬件描述语言开发流程 ?硬件描述语言与原理图输入法的关系 ?硬件描述语言的发展 硬件描述语言的概述 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog H DL。 VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog 自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。 从EDA技术的发展上看,已出现用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不成熟,应用极少,但它有可能会成为继VHDL和Verilog之后,设计大规模CPLD/FPGA的又一种手段。 硬件描述语言[浏览次数:约491次]

硬件描述语言试题

2007/2008 学年第一学期末考试试题(A卷) 硬件描述语言及器件 使用班级:05182401/2/3 一、填空题(20分,每空格1分) 1、VHDL是否区分大小写?。 2、digital_ _8标识符合法吗?。12_bit标识符合法吗?。 signal标识符合法吗?。 3、结构体有三种描述方式,分别是、、和。 4、请分别列举一个常用的库和程序包、。 5、一个信号处于高阻(三态)时的值在VHDL中描述为。 6、将一个信号width定义为一个4位标准逻辑向量的语句为 。 7、/=是操作符,功能是。 8、设D0为'0', D1为'1', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是 ,(D3 or D2)and(D1 and not D0)的运算结果是:。 9、赋值语句是(并行/串行)执行的,if语句是(并行/串行)执行的。 10、请列举三种可编程逻辑器件:、、。

二、简答(20分,每小题5分) 1、简述VHDL程序的基本结构。 2、简述信号与变量的区别。 3、简述可编程逻辑器件的优点。 4、试比较moore状态机与mealy状态机的异同。

三、判断题(10分) library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; 以上库和程序包语句有无错误?,有的话请在原程序相应位置改正。 entity rom is port( addr: in std_logic_vector(0 to 3); ce: in std_logic; data:out std_logic_vector(7 downto 0); ) end rom; 以上port语句有无错误?,有的话请在原程序相应位置改正。 architecture behave of rom is begin process begin if ce='0' then case addr is when "0000"=> data<="10001001"; when "0001"=> data<="10001010"; when "0010"=> data<="10001011"; when "0011"=> data<="10001100"; when "0100"=> data<="10001101";

硬件描述语言实验

《硬件描述语言》实验指导书 南通大学电子信息学院 2008 年2 月

1、目的和任务 《硬件描述语言》是一门侧重于数字电子系统的设计和测试方法的课程,它的上机实验是教学中的一个重要环节。通过上机学习,学生不仅可以系统地复习、巩固该课程的基本理论,而且培养学生解决问题能力和创新能力,同时为该课程的课程设计作准备。 2、教学基本要求 (1)、熟练使用EDA 软件(Quartus II、ModelSim); (2)、掌握用V erilog HDL 实现组合逻辑电路和时序逻辑电路的方法。3、实验条件 (1)、PC 机、Quartus Ⅱ软件和ModelSim软件 (2)、GW48型EDA 实验开发系统(EP1K30TC144-3) 4、实验内容 序号实验内容 1 实验一设计工具的使用 2 实验二组合逻辑电路设计(一) 3 实验三组合逻辑电路设计(二) 4 实验四总线与总线操作 5 实验五时序逻辑电路设计(一) 6 实验六时序逻辑电路设计(二) 5、实验成绩 实验成绩的评定由实验的验收等级和实验报告等级两个部分组成,各占50%。实验的验收等级和实验报告等级均采用5 个等级,即优、良、中、及格和不及格。实验成绩占本课程平时成绩的50%。

实验一设计工具的使用 1、实验目的与要求 掌握在Quartus Ⅱ开发环境下,运用硬件描述语言输入法对“三人表决器”进行设计输入、编译、调试和仿真的方法。 “三人表决器”电路的输入为SW1、SW2 和SW3,输出为L3 和L4,位宽均为1 位。当SW1、SW2 和SW3中有超过2个以上的输入为1时,要求熟悉整个设计流程,从打开、建立文档、编辑、编译、建立激励信号波形及最后仿真的整个过程。 2、实验内容 (1)在Quartus Ⅱ开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入; (2)完成编译、调试和仿真,分析实验仿真结果,并判断其正确性。 3、教学形式 (1)本实验为验证型实验,学生在实验前预习实验指导书; (2)指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明; (3)实验结束之后,学生按照实验报告的书写格式自行完成实验报告。 4、应达到的实验能力标准 (1)能熟练地在Quartus Ⅱ开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入; (2)能熟练地进行编译和调试,排除编译后的错误; (3)正确地在仿真之前进行功能仿真的设置,并熟练地完成功能仿真; (4)掌握基于ACEX1K系列EP1K30TC144-3器件的时序仿真方法。 5、思考题 (1)用Quartus II 软件对设计电路进行的仿真包括哪两种类型,它们之间 有什么区别? (2)硬件描述语言输入法进行设计时的基本操作流程包括哪些环节?

硬件描述语言课程教学大纲(2016版v2)

硬件描述语言 (Hardware Description Language) 课程编号:109232学分: 2 开课单位:电子信息工程学院总学时:32 课程类别:专业课课程性质:必修 注:课程类别是指通识类平台课/学科平台课/专业核心课/专业课/;课程性质是指必修/限选/任选 一、课程的性质和目的 课程性质:本课程是电子信息工程及通信工程专业的必修课,主要介绍Verilog语言基本语法和设计思想,熟悉FPGA开发流程,培养学生应用Verilog及EDA工具开发设计数字系统的基本方法及技术,具有很强的工程实践性。 目的:使学生通过对Verilog语言及FPGA开发技术的学习和训练,获得现代硬件数字电路的软件化设计方法,了解并初步掌握当代数字电子技术设计领域的最新技术,为学生在数字技术领域的进一步深入探索和创新奠定基础。 二、课程教学内容及基本要求 掌握Verilog语言的程序结构、基本描述语句及描述方法,熟悉行为级描述、结构级描述和开关级描述的要求和特点,掌握采用硬件描述语言描述各层次的方法,熟悉EDA实验开发系统的使用;掌握小型数字系统的Verilog设计技术。 (一)课程教学内容及知识模块顺序 1.知识单元一绪论(2学时) (1)知识点一:集成电路设计技术的发展 (2)知识点二:硬件描述语言Verilog HDL与VHDL (3)知识点三:FPGA/CPLD简介 教学基本要求: 本章为介绍性内容,要求了解硬件描述语言的特点,掌握CPLD/FPGA的发展历史和两者的区别,理解ASIC、SOPC等的含义。 2.知识单元二: Verilog HDL基础(8学时) (1)知识点一:模块的概念 (2)知识点二:Verilog HDL基本语法 (3)知识点三:运算符及表达式

MicroBlaze实例说明

MicroBlaze相关 by coosign 2005年12月 https://www.doczj.com/doc/2c6904792.html,/ 一、嵌入式相关知识 略 二、MicroBlaze的优势 MicroBlaze软内核是一种针对Xilinx FPGA器件而优化的功能强大的标准32位RISC 处理器。采用传统的单处理器方法进行的基础设计配合Virtex-II Pro FPGA在 150 MHz的时钟频率下,性能达到125 Dhrystone MIPS (DMIPS),如果与Spartan-3 FPGA配合,在85 MHz 的时钟频率下,性能达到68 Dhrystone MIPS (DMIPS)。为了达到更高的性能,在Virtex-II系列平台FPGA中植入32位PowerPCTM内核,它的DMIPS性能是竞争软处理器内核的五倍多。在Virtex-II Pro FPGA中实现的32位PowerPC内核,在时钟频率为450 MHz 时的性能超过680 DMIPS。总体性能如此之高,但成本却很低,这是因为集成在Virtex-II FPGA中的处理器既简化了设计,占用的片芯面积也减小了。例如,一个高效的设计仅使用了Xilinx 2VP50器件中不到2%的芯片面积。 1、用户可以根据不同的需要灵活地定制系统特性和外设 2、提升系统性能 3、降低成本 4、加快产品的上市时间 如图,使用了嵌入式CPU内核,把一些外设集成到单片FPGA中,可以减小系统复杂性,降低功耗和成本。 传统的系统框架图 SOPC框架图

个人使用体会:使用CPU软核做一些控制还是非常方便的,而且Xilinx提供了强大的模块支持,如GPIO、TIMER、UART、EMC等等。用于实现参数可变的数字滤波器也比较方便。 BUG:上次参加Xilinx的一次培训,工程师说引入CPU会给系统带来不稳定,程序容易跑飞,在极端环境下(如高温),容易死机。 三、EDK软件开发环境 Xilinx软件开发环境功能强大,而且非常容易上手。集成开发环境如下: ISE 7.1 EDK 7.1 3.1 EDK安装目录介绍 服务器上的EDK开发工具安装包:edk_71i_pc.bin,这个光盘映象文件里有安装文件和SP2的升级程序。建议大家打上SP2的补丁。 EDK安装后,安装目录树如下: 其中比较重要的子目录是doc和sw。 doc目录下放了大量的文档资料,具有重大参考价值。如: edk_getstarted.pdf Getting Started with Xilinx? EDK ps_ug.pdf Platform Studio User Guide oslib_rm.pdf OS and Libraries Document Collection iss_ug.pdf Instruction Set Simulator User’s Guide mb_ref_guide.pdf MicroBlaze Processor Reference Guide psf_rm.pdf Platform Specification Format Reference Manual 其中比较重要的是ps_ug.pdf。 sw目录下放置的是Drivers, BSP’s and software services。对于我们编写C代码来说,是非常重要的参考资料。

Quartus_II_9.1实例

Quartus II 实践作业 通过一个简单的实例介绍Quartus II 9.1基本使用方法。 Introduction 典型的计算机辅助设计流程 开始——新建一个项目(project)——逻辑原理图设计输入——编译设计——管脚分配——仿真设计电路——规划、配置FPGA器件——测试设计的电路 一个典型的FPGA计算机辅助设计流程如图1所示。 图1 FPGA CAD设计流程

设计流程的步骤: ?设计输入(Design Entry)-- 用原理图或者硬件描述语言说明设计的电路。 ?综合(Synthesis)-- 将输入的设计综合成由FPGA芯片的逻辑元件(logic elements)组成的电路。 ?功能仿真(Functional Simulation)-- 测试、验证综合的电路功能正确与否,不考虑延时。 ?适配(Fitting)-- 将工程的逻辑和时序要求与器件的可用资源相匹配。它将每个逻辑功能分配给最佳逻辑单元位置,进行布线和时序分析,并选定相应的互连路径和引脚分配。 ?时序分析(Timing Analysis)-- 通过对适配电路的传播延迟的分析,提供电路的性能指标。 ?时序仿真(Timing Simulation)-- 验证电路的功能和时序的正确性。 ?编程和下载配置(Programming and Configuration)-- 在FPGA上实现设计的电路。 本文主要介绍Quartus II 的基本特性。演示如何用逻辑原理图在Quartus II平台设计和实现电路。包括: ?创建一个项目(project) ?用逻辑原理图设计输入 ?综合 ?适配 ?分配管脚 ?仿真 ?编程与下载 1 创建一个项目 (1)启动Quartus II ,选择File > New Project Wizard,弹出窗口(图2)

硬件描述语言与器件考试试题题型

20XX/20XX学年第一学期末考试试题(A卷) 硬件描述语言及器件 使用班级: XXXXXX 一、填空题(20分,每空格1分) 1、VHDL语言中标识符通常分为,两种。 2、VHDL对象包含,,, 4个基本数据类型。 3、VHDL语言中,数据类型常量说明的一般格式为:。 4、VHDL中位矢量类型表达为,位向量类型表达为。 5、VHDL语言有,, 3种不同类型的数据变换方法。 6、VHDL中,设D0为“1001”, D1为'0', D2为“0110”。D0 & D1的运算结果是,D0 & D2的运算结果是。 7、VHDL语言中包括四种运算操作符,分别是,, ,和。 8、为了启动进程,VHDL语言中必须包含一个或者。

二、判断对错并给出判断依据(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);语句中采用了位置映射的信号端口映射方式。()

三、判断题(10分) use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; 以上库和程序包声明是否完整?,如果不完整请添加 entity rom is port( addr: in std_logic; ce: in std_logic; data:out std_logic_vector(7 to 0) ); end rom; 以上实体定义有无错误?,有的话请改正原语句 architecture behave of entity is begin process(ce,addr) begin if ce='0' case addr is when ‘0’=> data<="10001001"; when others=> data<="10011000"; elseif data<="00000000"; end if end behave; 以上architecture中划线各行有无错误?请在相应行划线位置判断并改正。

相关主题
文本预览
相关文档 最新文档