EDA实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称:EDA实验
实验题目:EDA实验总结
学生姓名:裴彬彬学号:20101050045
物理科学技术学院物理系2010 级电子科学与技术专业
指导教师:陈永康
实验时间:2013 年
实验地点:物科学院3414
一:3-8译码器
实验程序:
module no1(y,en,a) ;
output [7:0]y ;
input en ;
input [2:0]a;
reg[7:0] y ;
always @ (en or a)
if (!en)
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 ;
default : y = 8'bx ;
endcase
endmodule
波形:
实验总结:
1.编程中在使用CASE语句时,容易将ENDCASE语句忘掉,导致程序错误。
2.在文件名必须与VHDL文件中的设计实体名保持一致。
二:4位并行乘法器
实验程序:
module no2(a,b,y);
input [3:0]a;
input [3:0]b;
output [7:0]y;
assign y=a*b;
endmodule
波形:
实验总结:
本实验学习了assign语句的使用方法和使用条件。三:补码生成
实验程序:
module no3 (a,y);
input [7:0]a;
output [7:0]y;
reg [7:0]y;
always@(a[7])
begin
if(a[7]==0)
y=a;
else
y={a[7],~(a[6:0])+1};
end
endmodule
波形:
实验总结:
在验证结果的过程中,对于二进制的补码转换过程中容易产生错误,但是只要仔细对比就会发现转换过程无误。
四:32位任意分频器
实验程序:
module no4 (clk,din,out,load);
input clk,load;
input [3:0]din;
output out ;
reg [3:0]q1,q2;
reg out;
always@(posedge clk)
begin
if(load==0)
q1<=din;
else if(q2==q1&&q2!=0)
begin
out<=1'b1;
q2<=0;
end
else
begin
out<=1'b0;
q2<=q2+1;
end
end
endmodule
波形:
实验总结:
通过此次实验熟练掌握了 QuartusII 的设计流程和对verilog 语言的理解法分析能力。也了解到一些关于数控分频器的原理、对数控分频器的分析和测试方法。
五:T触发器
实验程序:
module no5 (in1,clk,y);
input in1,clk;
output y;
reg y;
always@(posedge clk)
if(in1==1)
y=!y;
else
y=y;
endmodule
波形:
实验总结:
调试程序时程序有很多错误,主要是文件名、实体名和触发器的顶级实体名不一致导致程序进行仿真错误,把工程名改为no5就行了。
六:计数器
实验程序:
module no6(in,out,clk);
input in,clk;
output [3:0]out;
reg [3:0] out;
always@(posedge clk)
begin
if(in==1)
out=0;
else
out=out +1;
end
endmodule
波形:
实验总结:
这次试验要求我们必须有耐心,因为整个过程中会犯很多错误,我们必须静下心来仔细检查,发现并改正错误,错误面前我们必须保持冷静的头脑,不能急躁,严格按照已定步骤走,有计划,有目的。
七:多位数值比较器
实验程序:
module no9(a,b,out);
input[2:0]a;
input[2:0]b;
output out;
reg out;
always@(a,b)
begin
if(a[2]>b[2])
out=1;
else if (a[2]
out=0;
else if(a[1]>b[1])
out=1;
else if(a[1]
out=0;
else if(a[0]>b[0])
out=1;
else if(a[0]
out=0;
else out=1'hz;
end
endmodule
波形: