《FPGA设计实验》考试题目.docx
- 文档编号:3159153
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:16
- 大小:2.42MB
《FPGA设计实验》考试题目.docx
《《FPGA设计实验》考试题目.docx》由会员分享,可在线阅读,更多相关《《FPGA设计实验》考试题目.docx(16页珍藏版)》请在冰点文库上搜索。
《FPGA设计实验》考试题目
FPGA设计实验考试题目(开卷)
要求:
以下题目除特别说明外,均必须通过硬件测试(即下载至开发板验证),并编写好TestBench,通过ModelSim仿真,给出其源程序(关键语句必须解释语句含义)、功能仿真图、RTL图(主要图形说明其功能)或状态机图。
其中现场操作50分。
总分100分。
1、设计一个多位数据比较器(测试时以3位为例)
2、设计一个投票表决器(测试时以5人为例)
3、将开发板上的50MHZ时钟分频为秒脉冲时钟信号
module fenp(clk_out,clk_in,reset); output clk_out; input clk_in; input reset; reg [1:
0] cnt; reg clk_out;lways@(posedge clk_in or posedge reset) begin if(reset) begin cnt<=0; clk_out<=0; end else begin
if(cnt==24999999) begin
clk_out<=!
clk_out; cnt<=0; end else cnt<=cnt+1; end end endmodule
系统时钟为50MHz,用Verilog代码怎样将其分频至1/100s
moduleS20(clk,rst,clk_out);
inputclk,rst;
outputclk_out;
regclk_out;
reg[4:
0]count1;
always@(posedgeclkornegedgerst)
if(!
rst)
begin
count1<=0;
clk_out<=0;
end
else
begin
if(count1<20)
begin
count1<=count1+1;
if(count1>=10)
clk_out<=1;
else
clk_out<=0;
end
else
count1<=0;
end
endmodule
设计一个分频器,要求:
占空比为50%的任意奇数次5分频电路。
module div_5 ( clkin,clkout );
input clkin; output clkout;
reg [2:
0] step1, step2;
always @(posedge clkin ) begin
case (step1)
3'b000:
step1<=3'b001; 3'b001:
step1<=3'b011; 3'b011:
step1<=3'b100; 3'b100:
step1<=3'b010; 3'b010:
step1<=3'b000; default:
step1<=3'b000; endcase end
always @(negedge clkin ) begin
case (step2)
3'b000:
step2<=3'b001; 3'b001:
step2<=3'b011; 3'b011:
step2<=3'b100; 3'b100:
step2<=3'b010; 3'b010:
step2<=3'b000; default:
step2<=3'b000;
endcase end assign clkout=step1[0]|step2[0]; endmodule
测试模块:
`timescale 1 ps/ 1 ps module div_5_vlg_tst(); reg eachvec;
reg clkin; wire clkout; div_5 i1 ( .clkin(clkin), .clkout(clkout) );initial
begin
clkin=0;
forever #5 clkin=~clkin; end
assign step1=i1.step1[0]; assign step2=i1.step2[0]; endmodule
4、设计一个2.5次分频器。
module divn5 (CLK, PREL, NCLK); input CLK; input[2:
0] PREL; output NCLK; wire NCLK; reg[2:
0] COUNTER; reg SIG_CLK; wire LCLK; reg PCLK;
assign LCLK = CLK ^ PCLK always @(posedge LCLK) begin
if (COUNTER == 3'b000) begin
COUNTER <= PREL end else begin
COUNTER <= COUNTER - 1 end end
always @(posedge LCLK) begin
if (COUNTER == 3'b010) begin
SIG_CLK <= 1'b1 end else begin
SIG_CLK <= 1'b0 end end
always @(posedge SIG_CLK) beginPCLK <= ~PCLK end
assign NCLK = SIG_CLK endmodule
5、在开发板上完成LPM嵌入式PLL的设计。
要求设计一个分频系数为4/5、延时为0,占空比为25%的分频器。
(提示:
在ALTPLL参数设置界面的output标签页上,选择“usethisclock”,接着选择“Enteroutputclockparameters”,其中分子clockmultiplicationfactor设为4,分母clockdivisionfactor设为5,占空比clockdutycycle(%))
6、在开发板上完成LPM嵌入式PLL的设计。
要求设计一个倍频系数为2、延时为0,点空比为25%的倍频器。
(提示:
在ALTPLL参数设置界面的output标签页上,选择“usethisclock”,接着选择“Enteroutputclockparameters”,其中分子clockmultiplicationfactor设为2,分母clockdivisionfactor设为1,占空比clockdutycycle(%))
7、在开发板上完成LPM嵌入式PLL的设计。
要求输出3个频率分量,一个是2KHZ,一个是150MHZ,另一个是200MHZ。
(提示:
在ALTPLL参数设置界面的output标签页上,选择“usethisclock”,接着选择“Enteroutputclockfrequency”)
8、参考教材P.143,定制一个ROM,其mif文件如图6-10所示(即定制一个字长为8,容量深度为128的ROM)。
然后按教材P.146的要求,在QuartuiII9.0平台上进行功能仿真。
9、设计一个3-8译码器
moduledecoder_38(out,in);
output[7:
0]out;
input[2:
0]in;
reg[7:
0]out;
always@(in)
begin
case(in)
3'd0:
out=8'b11111110;
3'd1:
out=8'b11111101;
3'd2:
out=8'b11111011;
3'd3:
out=8'b11110111;
3'd4:
out=8'b11101111;
3'd5:
out=8'b11011111;
3'd6:
out=8'b10111111;
3'd7:
out=8'b01111111;
endcase
end
endmodule
10、设计一个8-3编码器
11、设计一个时钟下降沿检测的、同步置1、异步高电平清零的D触发器
12、试分别用行为描述风格和数据流描述风格各设计一个带使能端的的2选1数据选择器
15、试分别用行为描述风格和数据流描述风格各设计一个带使能端的4选1数据选择器。
13、设计一个双向门电路,当方向控制信号wr为高电平时,信号Y作为输出,值为输入信号a的值;当方向控制信号wr为低电平时,信号Y作为输入,输出信号b为信号Y的值,其它情况下,输出信号均为高阻态。
14、设计一个通用二进制计数器,其功能有加/减计数、同步置位和异步低电平复位(测试时可以4位为例)。
15、设计一个二进制码和格雷码相互转换的verilog程序(测试时可以4位为例)。
16、设计一个同步可预置的、加法和减法计数器(测试时可以4位为例)。
17、利用LPM定制一个4位十二进制加法和减法计数器。
module counter4(load,clr,c,DOUT,clk,up_down,DIN);//定义模块 input load;//定义输入信号 input clk;//
wire load;//定义线网型 input clr;// wire clr;//
input up_down;// wire up_down;//
input [3:
0]DIN;//定义4位二进制输入信号 wire [3:
0]DIN;// 定义4位二进制线网型信号
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)//检测clk,clr,load的上升沿 begin
if(clr)//当clr=1的时候进行下面的运行程序 data_r<=0;//将data_r置零
else if(load) //当load=1的时候进行下面的运行程序 data_r<=DIN;//将DIN的值赋给data_r
else begin if(up_down)//load=0的时候进行下面的操作 begin
if(data_r==4'b1111)begin///当data_r==4'b1111的时候进行下面的运行程序
data_r<=4'b0000; c=1; end
else begin//当data_r不等于4'b1111的时候进行下面的运行程序 data_r<=data_r+1;//进行加法计数 c=0; end end else begin
if(data_r==4'b0000)begin//当data_r==4'b0000的时候进行下面的运行程序 data_r<=4'b1111; c=1; end
else begin//当data_r不等于4'b1111的时候进行下面的运行程序 data_r<=data_r-1;//进行减法计数 c=0; end end end end
endmodule//结束模块
18、设计一个Johnson计数器。
Johnson计数器工作原理如下:
(1)如果当前计数值的最高位为1,则执行最低位补0的左移操作;
(2)如果当前计数值的最高位为0,则执行最低位补1的左移操作。
以3位的Johnson计数器为例,其计数顺序依次为:
000----001----011----111----110----100----000----
modulejohnson(clk,clr,out);
inputclk,clr;
output[3:
0]out;
reg[3:
0]out;
always@(posedgeclkorposedgeclr)
begin
if(clr)out<=4'h0;
else
beginout<=out<<1;
out[0]<=~out[3];
end
end
endmodule
19、设计一个位宽为3位的通用移位寄存器。
要求该寄存器能够实现如下功能:
(1)异步低电平清零;
(2)储存任意预置数;(3)左移或(右移)操作。
20、设计一个位宽为4位的环形移位寄存器。
要求该寄存器能够实现如下功能:
(1)异步低电平清零;
(2)储存任意预置数;(3)左移或(右移)操作。
21、module Shift_Register(CLK,CLR,S1,S0,LIN,RIN,D,C,B,A,QD,QC,QB,QA);
22、input CLK,CLR;
23、input S1,S0;
24、input LIN,RIN;
25、input D,C,B,A;
26、output QD,QC,QB,QA;
27、reg QD,QC,QB,QA;
28、always @(posedgeCLK)
29、begin
30、 if(CLR==1'b0)
31、 {QA,QB,QC,QD}<=4'b0;
32、 else
33、 begin
34、 case({S1,S0})
35、 2'b00 :
{QA,QB,QC,QD}<={QA,QB,QC,QD};
36、 2'b01 :
{QA,QB,QC,QD}<={RIN,QA,QB,QC};
37、 2'b10 :
{QA,QB,QC,QD}<={QB,QC,QD,LIN};
38、 2'b11 :
{QA,QB,QC,QD}<={A,B,C,D};
39、 default :
{QA,QB,QC,QD}<={QA,QB,QC,QD};
40、 endcase
41、 end
42、end
43、endmodule
44、用循环语句设计一个4位乘法器
45、用例化语句设计一个1位全加器,要求首先设计1位半加器
46、设计一个具有三态功能的4位位宽的D锁存器,要求该锁存器具有同步高电平复位、同步使能和三态控制(三态输出控制端为高电平时,输出为高阻态)功能。
47、设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0
48、设计一个时钟上升沿触发的JK触发器
49、设计一个100序列检测器
50、设计一个111序列检测器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA设计实验 FPGA 设计 实验 考试 题目