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

硬件描述语言范例

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

硬件描述语言范例

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

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

硬件描述语言HDL的现状与发展

硬件描述语言HDL的现状与发展 摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。 关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC 引言 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE 标准。 现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前HDL发展状况 目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。 而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。 在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2

硬件描述语言及器件实验指导书

硬件描述语言及器件实验指导书 电子科学与技术专业组

第1章实验一用硬件描述语言的方法设计一个三输入与门电 路 一、实验目的 1、掌握MAX+plusII的使用方法。 2、掌握VHDL语言程序的基本结构。 2、掌握使用硬件描述语言设计数字电路的方法和步骤。 3、掌握用硬件描述语言设计三输入与门电路的方法。 二、实验器材 1.台式计算机1台。 2.可编程逻辑逻辑器件实验软件1套。 3.下载电缆一套。 4.示波器一台。 三、实验说明 1.台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。 2.可编程逻辑逻辑器件实验软件向原理图的设计提供平台,并将调试好的原理图下载到可编程逻辑逻辑器件中。 3.下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。 4.示波器用于观察可编程逻辑器件执行程序时输出信号的变化。 四、实验内容与要求 用硬件描述语言的方法设计一个三输入与门电路,要求: (1)根据三输入与门的逻辑表达式,在构造体中直接使用并行赋值语句实现,并进行仿真;

(2)根据三输入与门的真值表,在构造体中使用进程语句实现,并进行仿真; 五、实验步骤(下面七个的实验的软件的使用具体步骤跟本次试验一样不再详述) 1.打开新建菜单选择“textedtiorfile”,这个文件是写程序编程用的。 2.程序写完后点“保存”,注意(1)保存的格式是.vhd,(2)保存的地址不能是桌面和硬盘的根目录,否则在后面的编程将出现错误。

3.在file→projectset→projecttocurrentfile,这步是将文件设置在工程里,能够正常编译和下载。

实验3 基于硬件描述语言的电路设计

实验3 基于硬件描述语言的电路设计 一、实验目的 1 、了解可编程数字系统设计的流程; 2 、掌握Quartus II 软件的使用方法; 3 、掌握采用硬件描述语言设计数字系统的方法和流程。 二、实验设备 1、计算机:Quartus II 软件 2、Altera DE0 三、实验内容 要求1:学习并掌握硬件描述语言(VHDL或Verilog HDL);熟悉门电路的逻辑功能,并用硬件描述语言实现门电路的设计。参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板验证。 要求2:熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-F 的七段码译码器。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板,利用开发板上的数码管验证。 要求3:熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容3”中给出的四位二进制加减计数器的源程序,编写一个计数器。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板验证。 要求4:熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。 1)下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下: 四、实验结果 1、用硬件描述语言(VHDL 或Verilog HDL)实现一个异或门电路。 VHDL源程序: Library ieee; use ieee.std_logic_1164.all;

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

专科《硬件描述语言和数字系统设计》 一、(共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/e917434513.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

硬件描述语言范例

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

硬件描述语言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条: 简单设计有助于规整化 加快常见功能 越小的设计越快 好的设计需要好的折中

ABEL硬件描述语言概述

电子技术课 程设计资料 ABEL硬件描述语言概述

ABEL语言简介 ?ABEL语言是一种硬件描述语言(也称为ABELHDL),是开发PLD的一种高级程序设 计语言,由美国DATA I/O公司于1983~1988 年推出。 ?ABEL语言支持逻辑方程、真值表和状态图三种逻辑描述方式。 ?具有简单易学的特点。 ABEL语言设计源程序通过ispDesignExpert 软件编译、语法检查、逻辑化简、自动生成符合标准的JEDEC文件(“.JED”文件)。

两个问题: 1.什么是ABEL HDL 源文件 ABEL HDL 源文件。 2. ABEL HDL 设计的基本思想 不 语言来进行教学。 一部分使用高级语言,用来描述逻辑设计; 另一部分是语言处理程序,用于将逻辑描述转化为其下载文件 中含有编程及测试可编程逻辑器件所需的信息。

ABEL HDL 有如下一些特点: ①适用于各种型号的器件的通用语法; ②结构化的高级设计语言; ③灵活的逻辑描述形式——布尔关系式、真 — 值表、状态图; ④仿真与测试向量; ⑤省时的宏定义及指示字。 ABEL HDL 的处理程序提供了如下强大功能: ①语法检查; ②检验所选器件能否实现设计要求; ③逻辑简化; ④设计模拟; ⑤自动生成文件。

一、ABEL 语言元素 1. 字符和数 ⑴标识符: ?标识符代表器件、器件管脚、节点、集合、输入信号、输出信号、宏、常量及变量等。 ???标识符不能和关键字(即保留字)重名。 ⑵字符串: 用单引号扩起来的一系列字符。 ⑶注释: 以双引号开头的一行字符。

2. 运算符、表达式与方程 ⑴运算符 ?逻辑运算符: 运算符说明举例!逻辑非!A & 逻辑与A&B # 逻辑或A#B $ 逻辑异或A$B !$ 逻辑同或A!$B

硬件描述语言HDL的现状与发展

摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内eda基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。关键词:asic 硬件描述语言hdl verilog hdl vhdl systemc superlog 芯片系统soc引言硬件描述语言hdl是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(eda)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路asic或现场可编程门阵列fpga自动布局布线工具,把网表转换为要实现的具体电路布线结构。目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的asic和fpga采用硬件描述语言进行设计。硬件描述语言hdl的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,vhdl和verilog hdl语言适应了这种趋势的要求,先后成为ieee标准。现在,随着系统级fpga以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像superlog、systemc、cynlib c++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为eda设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前hdl发展状况目前,硬件描述语言可谓是百花齐放,有vhdl、superlog、verilog、systemc、cynlib c++、c level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。而比较一致的意见是,hdl和c/c++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。在2001年举行的国际hdl会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2票或3票赞成使用systemc、cynlib和c level 设计;而superlog和verilog各自获得了约20票。至于以后会是什么情况,连会议主持人john cooley也明确表示:“5年后,谁也不知道这个星球会发生什么事情。”各方人士各持己见:为verilog辩护者认为,开发一种新的设计语言是一种浪费;为systemc辩护者认为,系统级芯片soc快速增长的复杂性需要新的设计方法;c语言的赞扬者认为,verilog 是硬件设计的汇编语言,而编程的标准很快就会是高级语言,cynlib c++是最佳的选择,它速度快、代码精简;superlog的捍卫者认为,superlog是verilog的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化,而不是一场革命。当然,以上所有的讨论都没有提及模拟设计。如果想设计带有模拟电路的芯片,硬件描述语言必须有模拟扩展部分,像verilog hdl-a,既要求能够描述门级开关级,又要求具有描述物理特性的能力。 2 几种代表性的hdl语言2.1 vhdl 早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行vhdl的开发。1987年,由ieee(institute of electrical and electro- nics engineers)将vhdl制定为标准。参考手册为ieee vhdl 语言参考手册标准草案1076/b版,于1987年批准,称为ieee 1076-1987。应当注意,起初vhdl只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定

VHDL硬件描述语言实验报告

硬件描述语言实验附录 姓名:xxx 学号:xxx 指导教师:xxx 目录 硬件描述语言实验附录 (1) 实验1.三输入与门电路实验 (2) 实验2. 三—八译码器实验 (3) 实验3. D触发器实验 (4) 实验4. 分频器实验 (5) 实验5. 状态机实验 (8)

实验1.三输入与门电路实验 --三输入与门电路threeinput --姓名:王定 --学号:1306034248 --中北大学 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL;--库文件 -------------------------------------------------------------- ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入 B: IN STD_LOGIC; --输入端口,个位写入使能 C: IN STD_LOGIC; --输入端口,十位写入使能 CO: OUT STD_LOGIC); --输出端口,溢出标志 END ENTITY threeinput; --结束端口定义 -------------------------------------------------------------- ARCHITECTURE RTL OF threeinput IS--定义结构体 BEGIN PROCESS(A,B,C) IS --开始,必须带上 BEGIN CO<=A AND B AND C ; END PROCESS; END ARCHITECTURE RTL; --结束结构体 表1. 三输入与门电路VHDL实验代码 图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出

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

数字电子技术实验报告-基于Quartus-II的硬件描述语言电路设计

数字电子技术基础 实验报告 题目:实验四基于Quartus II的硬件描述语言电路 设计 小组成员: 小组成员:

一、实验四基于Quartus II的硬件描述语言电路设 计 一、实验目的 1)学习并掌握硬件描述语言VHDL;熟悉门电路的逻辑功能,并用硬件描述语 言实现门电路的设计。 2)熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。 3)熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。 4)熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。 二、实验要求 要求1:参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。1)用QuartusII波形仿真验证;2)下载到DE0开发板验证。 要求2:参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-E的七段码译码器。1)用QuartusII波形仿真验证;2)下载到DE0开发板,利用开发板上的数码管验证。 要求3:参考“参考内容3”中给出的四位二进制计数器的源程序,编写一个计数器实现0-E计数。用QuartusII波形仿真验证; 要求4:参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占

空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下: 要求5:利用已经实现的VHDL模块文件,顶层文件采用原理图设计方法,实现0-E计数自动循环显示,频率1Hz和10Hz可以切换。(提示:如何将VHDL 模块文件在顶层原理图文件中引用,参考参考内容5) 三、实验设备 (1)电脑一台; (2)数字电路实验箱; (3)数据线一根。 四、实验原理 1.VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。

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

软件设计说明

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

硬件描述语言实验报告

《硬件描述语言》实验报告 学院: 学号: 姓名: 专业: 实验时间: 实验地点: 指导教师: 年月

实验一简单组合逻辑设计 一、实验目的及要求: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤 1.实验内容: 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; (2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。 (4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 四、实验结果与数据处理: 1.RTL图及仿真后波形图:

2.综合后的电路图: 五、分析与讨论: 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面? 答:第二种测试方法更全面,测试了更多种的变换的情况。 实验二简单分频时序逻辑电路的设计 一、实验目的及要求: 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤: 1.实验内容: (1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: (2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 (2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 (3)观察综合后生成的文件和源文件的不同点和相同点。

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