lab8_1002班_U201014077_龙明珠.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lab 8 模8可逆计数器和3/8译码器
龙明珠电工1002班U201014077
1.实验目的
1)熟悉用Quartus编译V erilog语言的方法。
2)能够自己编写代码。
3)了解Altera DE0板的操作和FPGA的I/O控制。
3) 学会FPGA I/O引脚分配和编译过程。
2.实验内容
●使用Verilog语言实现模8可逆计数器设计和3/8译码器设计
●仿真波形
●使用DE0开发板下载、验证(自行设计测试方案)
3.代码分析
1)分析所给Verilog代码,在主模块中,完成可逆模8计数器的功能,然后调用分频模块和38译码器模块完成实验,代码如下:
module m8 (cp,q,,mod,out);
input cp,mod;
output [2:0]q;
output [7:0]out;
freqDiv(cp,out_1Hz);
de_38(q,out);
reg[2:0]q;
always @ (posedge out_1Hz)
begin
if(q>=4'b01111) q<=4'b0000;
begin
if(mod==1)q<=q+1'b1;
else q<=q-1'b1;
end
end
endmodule
2)分频模块如下:
module freqDiv(in_50MHz,out_1Hz);
input in_50MHz;
output out_1Hz;
reg out_1Hz;
reg [31:0]cnt;
always@(posedge in_50MHz)
begin
if(cnt < 32'd2*******)
begin
cnt <= cnt + 1'B1;
end
else
begin
cnt <= 32'b0;
out_1Hz <= ~out_1Hz;
end
end
endmodule
3)38译码器模块如下:
module de_38(data_in,data_out);
input[2:0] data_in;
output[7:0] data_out;
reg [7:0] data_out;
always@(data_in)begin
case(data_in)
3'b000:data_out = 8'b0000_0001;
3'b001:data_out = 8'b0000_0010;
3'b010:data_out = 8'b0000_0100;
3'b011:data_out = 8'b0000_1000;
3'b100:data_out = 8'b0001_0000;
3'b101:data_out = 8'b0010_0000;
3'b110:data_out = 8'b0100_0000;
3'b111:data_out = 8'b1000_0000;
endcase
end
endmodule
4.实验步骤
1)连接DE0板的电源线和数据线,打开开关。
2)打开Quartus软件,选择“File=>New Project Wizard”,在弹出的窗口中输入项目的名称
和存储位置。
这里为了方便,我将名字定为与源代码一致的m8_38.
单击两次Next后,选择实验板的具体型号。
继续单击Next至如下窗口出现,确认信息无误后,单击Finish完成项目的创建。
3)在“File=>New”的窗口中选择建立Verilog文件。
单击OK后,在Quartus窗口的右方看到该文件,写入代码后选择“File=>Save”,将文件保存在与项目文件同样的位置即可。
然后可以看到如下状态:
4)选择“Processing=>Start Compilation”开始编译,编译通过后可以查看生成的Report。
5)选择“Assignment=>Pin planner”开始分配引脚。
将本项目需要用到的接口一一分配其
在DE0板上相对应的引脚号。
包括有所有的Q, cp, oSEG。
6)选择“Tools=>Programmer”,此时还没有在此项目中安装硬件。
选择Hardware Setup安
装硬件。
因为DE0板是通过USB连接,故选择USB-Blaster。
然后选择Close。
行。
5.实验结果的测试和分析
在DE0板上可以看到,当SWITCH[0]开时LED[0]、LED[1]、LED[2]、LED[3]、LED[4]、LED[5]、LED[6]、LED[7]每隔一秒依次循环亮,当SWITCH[0]关时,则亮的顺序相反。
6.实验总结
通过这个实验让我熟悉了与DE0实验板相关的一系列实验流程,掌握Quartus软件的一些常用操作。
能够综合别人的代码写出自己的代码,对我以后的学习是一种极大的鼓励。
7.参考文献
1)源代码:
罗杰主编. Verilog HDL与数字ASIC设计基础. 华中科技大学出版社.2007
刘毅冰学长提供分频代码。