2016年《FPGA技术》考试题型示范

更新时间:2023-04-29 15:11:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2016年《FPGA技术》考试题型示范

一、填空题。(每题1 分,共10分)

1.将硬件描述语言转化为硬件电路的过程称为综合。

2. FPGA 是基于查找表结构的可编程逻辑器件。

3.. 早期的CPLD 是从GAL 的结构扩展而来。

4.不正确使用else的不完整的IF 语句,其综合结果会产生锁存器。

5.FPGA/CPLD配置方式中,由由可编程逻辑器件引导的配置过程称为

二、问答题(每题5 分,共20 分)

1.简要说明一下功能仿真和时序仿真的异同。设计过程中如果只做功能仿真,不做时序仿真,设计的正确性是否能得到保证。

2.基于EDA 软件的FPGA / CPLD 设计流程是什么?

3.从互联结构上,可编程逻辑器件可分为哪两类?其特点是什么?

三、程序分析(约40分)

1、程序补充完整

module shifter( din,clk ,clr,dout);

input din,clk,clr;

output [7:0] dout;

reg[7:0] dout;

always @(posedge clk or posedge clr )

begin

if ( clr )

dout<= 8'b00000000;

else

begin

dout <= dout << 1;

dout[0] <= din;

end

end

endmodule

2.分析test22 模块功能

1)说明其中任务my_and 的功能。

2)根据测试文件test_tp 所描述的时间和激励信号输入,绘出相应的输入输出功能仿真波形图。

module test22 (code,a,b,c);

input[1:0] code;

1

input[3:0] a,b;

output[4:0] c;

reg[4:0] c;

task my_and;

input[3:0] a,b;

output[4:0] out;

integer i;

begin

out[4]=1'b0;

for(i=3;i>=0;i=i-1)

out[i]=a[i]&b[i];

end

endtask

always@(code or a or b)

begin

case(code)

2'b00: my_and(a,b,c);

2'b01: c=a|b;

2'b10: c=a-b;

2'b11: c=a+b;

default : c = 4'b0000;

endcase

end

endmodule

`timescale 1ns/100ps

module test_tp;

reg[3:0] a,b;

reg[1:0] code;

wire[4:0] c;

parameter DELY = 100;

test22 u1(code,a,b,c);

initial begin

code=4'd0; a= 4'b0000; b= 4'b1111;

#DELY code=4'd0; a= 4'b0111; b= 4'b1101;

#DELY code=4'd1; a= 4'b0001; b= 4'b0011;

#DELY code=4'd2; a= 4'b1001; b= 4'b0011;

#DELY code=4'd3; a= 4'b0011; b= 4'b0001;

2

#DELY code=4'd3; a= 4'b0111; b= 4'b1001;

#DELY $finish;

end

endmodule

3.画出下面程序描述的有限状态机的状态转移图module fsm(in1,in2,clk,reset,out);

input in1,in2;

input clk,reset;

output[1:0] out;

parameter s0= 2'b00,s1=2'b01,s2 = 2'b10,s3= 2'b11;

reg [1:0] next_state,cur_state;

reg [1:0] out;

always @ (posedge clk)

if(reset)

cur_state <= s0;

else

cur_state <= next_state;

always @ (in1 or in2 or cur_state)

case(cur_state)

s0 : if(in1)

begin out = in1 & in2 ;next_state = s1; end else

begin

out = 2'b00;next_state = s0; end

s1 : if(!in2 & in1)

begin out = 2'b10;next_state = s2; end else

begin

out = 2'b01;next_state = s1; end

s2 : begin

out = 2'b10;

if(in1 & in2)

next_state = s3;

else

next_state = s0;

end

3

s3 : if({in1,in2}==2'b00)

begin out = 2'b11;next_state = s1; end

else

begin out = 2'b01;next_state = s0; end

default :

begin out = 2'b00;next_state = s0; end

endcase

endmodule

4 、根据下面的Verilog HDL 代码, 画出综合后的电路图。

module test12(out,clk,in1,in2,in3,in4);

input in1,in2,in3,in4, clk;

output out;

reg out;

reg temp1,temp2;

always @ (posedge clk)

begin

temp1 <= in1 | in2;

temp2 <= temp1& in3;

out <= temp2 & in4;

end

endmodule

四、编程题。(约30分)

1. 根据图一所示的原理图写出相应的Verilog HDL程序,其中例化名为U1,U2的模块均是上升沿触发的触发器。

图一

2. 设计一个序列检测器, 用于检测串行的二进制序列, 每当连续输入”11011101”序

4

列时, 序列检测器的输出flag_out =1’b1,否则其它情况下输出f lag_out =1’b0。(1)画出状态图。

(2)写出实现程序。

(3)设时钟clk 仿真周期为400ns,试编写仿真输入激励信号的测试文件,画出该测试文件对应的输出信号的波形。

3.用V erilog HDL设计一个组合逻辑电路,实现可供三人至8人表决的表决器电路。

5

本文来源:https://www.bwwdw.com/article/60uq.html

Top