可编程实验报告.docx
《可编程实验报告.docx》由会员分享,可在线阅读,更多相关《可编程实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
可编程实验报告
可编程逻辑器件设计实验报告
实验名称:
第二部分:
VerilogHDL基础实验
实验目的:
掌握QuartusII软件的基本使用方法,完成基本时序电路设计
实验时间:
2014年06月19日地点:
803实验室
学生姓名:
学号:
实验名称:
简单D触发器
实验一 简单D触发器
1、实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
module_DFF(clk,d,q);
inputclk,d;
outputq;
regq;
always@(posedgeclk)
begin
q<=d;
end
endmodule
3.RTL视图
4.仿真波形
实验二 同步置数的D触发器
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduletbu(clk,d,load,q);
inputclk,d,load;
outputq;
regq;
always@(posedgeclk)
begin
if(!
load)
q<=1;
else
q<=d;
end
endmodule
3.RTL视图
4.仿真结果
实验三 同步置数异步清零的D触发器
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduletzyq_d(clk,set,reset,data,d,qout,);
inputclk,set,reset,d,data;
outputregqout;
always@(posedgeclkornegedgereset)
begin
if(~reset)qout<=1'b0;
elseif(~set)qout<=data;
elseqout<=d;
end
endmodule
3.RTL视图
4.仿真结果
实验四 带反输出的(同步置数异步清零)D触发器
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduled_q(in,clk,q,set,a,reset,q_n);
inputclk,in,set,a,reset;
outputregq,q_n;
always@(posedgeclk,negedgereset)
begin
q_n=~q;
if(!
reset)
q<=0;
elseif(!
set)
q<=a;
else
q<=in;
end
endmodule
3.RTL视图
4.仿真结果
实验五 4选1数据选择器
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduleMUX5(in0,in1,in2,in3,out,sel);
input[1:
0]sel;
inputin0,in1,in2,in3;
outputout;
regout;
always@(in0orin1orin2orin3orsel)
case(sel)
2'b00:
out=in0;
2'b01:
out=in1;
2'b10:
out=in2;
2'b11:
out=in3;
default:
out=2'bx;
endcase
endmodule
3.RTL视图
4.仿真结果
实验六 6选1数据选择器
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
modulem6_1(in0,in1,in2,in3,in4,in5,sel,out);
input[2:
0]sel;
inputin0,in1,in2,in3,in4,in5;
outputout;
regout;
always@(in0,in1,in2,in3,in4,in5,sel)
begin
case(sel)
3'b000:
out<=in0;
3'b001:
out<=in1;
3'b010:
out<=in2;
3'b011:
out<=in3;
3'b100:
out<=in4;
3'b101:
out<=in5;
default:
out<=1'bz;
endcase
end
endmodule
3.RTL视图
4.仿真结果
实验七 3-8译码器(Assign)
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduleas_38(a,q);
input[2:
0]a;
output[7:
0]q;
parameterm=8'b00000001;
assignq=(m<endmodule
3.RTL视图
4.仿真结果
实验八 3-8译码器(Always)
1.实验步骤
(1)创建工程
启动NewProjectWizard,创建一个工程。
(2)创建文件
选择菜单File—>New—>VerilogHDLFile,创建一个VerilogHDL文件,在VerilogHDL文件中编写能够完成实验功能的VerilogHDL代码。
(3)编译工程
选择菜单Processing—>StartCompilation,或者单击按钮
。
(4)观察RTL视图
选择菜单Tools—>NetlistViewers—>RTLViewer即可生成RTL视图。
(5)仿真
1).创建VWF文件
选择菜单File—>New—>VectorWaveformFile
2).设定“EndTime”
选择菜单EditFile—>EndTime,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点
选择菜单View—>UtilityWindows—>NodeFinder,在出现的对话框中将Filter框中设置为Pins:
all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形
5).观察仿真结果
选择菜单Processing—>StartSimulation,或者单击按钮
,观察输出波形。
2.VerilogHDL代码
moduleym3_8(in0,in1,in2,out);
inputin0,in1,in2;
output[7:
0]out;
reg[7:
0]out;
always@(in0,in1,in2,out)
begin
case({in2,in1,in0})
3'b000:
out<=8'b00000001;
3'b001:
out<=8'b00000010;
3'b010:
out<=8'b00000100;
3'b011:
out<=8'b00001000;
3'b100:
out<=8'b00010000;
3'b101:
out<=8'b00100001;
3'b110:
out<=8'b01000001;
3'b111:
out<=8'b10000001;
default:
out<=2'bz;
endcase
end
endmodule
3.RTL视图
3.仿真结果