4线2线译码器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4线2线译码器
4线2线优先编码器和十进制加减可逆计数器设计
1设计目标
A :掌握可编程逻辑器件的应用开发技术一一 设
计输入、编译、仿真和器件编程;
熟悉一种EDA 软件使用与实验系统介 绍; 掌握Verilog HDL 设计方法;
设计一个4线2线优先编码器,其功能如
下表所示:
专业:自动化
学号:XXXXXXXX
学生:XXXX
功能要求:①满足以上功能表
②在实验板的发光二级管或
编译显示电路,显示结果
B:用verilog HDL语言设计一个模为10的可逆计数器,能自动实现加减可逆计数,也能手
动实现加/减计数
用实验板上的译码显示电路, 显示结果2实验装置
586计算机,MAX+plus II 10・2软件,专用编
程电缆,EDA Pro2K数字实验装置等。

3设计步骤和要求
①在MAX+plus II 10.2软件中,输入设计的原理图。

②对电路进行仿真分析;
③选择器件,分配引脚,重新对设计项目进行编译和逻辑综合;
④对EDA Pro2K数字实验装置中的FPGA器件
进行在系统编程,并实际测试电路的逻辑功能;
4具体步骤
4.1 建立Quartus工程;
1 •打开Quartus II工作环境
2.点击菜单项F订e->New Project Wizard帮助新建工程
3.输入工程工作路径、工程文件名以及顶层实体名
4.添加设计文件
5.选择设计所用器件
6.设置EDA工具
7.查看新建工程总结
在完成新建后,Quartus II界面中Project Navigator 的Hierarchy 标签栏中会
出现用户正在设计的工程名以及所选用的器件型号
4.2使用Verilog HDL 完成设计输入
module p_encoder(In,out_coding); input [3:0] In;
output [1:0] out_coding; wire [3:0] In; reg [1:0] out_coding; always @(In) begin casez(In)
4'bl???:out_coding = 2bll; 4 * bO 1 ? ?: ou t_coding = 2'blO; 4 * bOO 1 ?: ou t_coding = 2'b01; 4 * bOOO 1: ou t_coding = 2'b00; default: ou t_coding = 2'b00; endcase end endmodule
A :
4线2线代码
B :十进制加减可逆计数器代码: 1)
顶层模块
module cntlO_top(clk,crl 9s,t 9out); input crl ,s ,t; input elk; output [7:0] out; wire cp; wire [3:0] Q; wire [7:0] out;
freqDiv U0(clk 9cp); clock rate cntlO Ul(crl,s,t,cp,Q); SEG7_LUT U2(out ,Q); the result
Endmodule
2) 十进制可逆计数模块
module cntlO (nclgt ,dk,Q); input clk ,nclgt; output [3:0] Q;
//to change the //to output
reg [3:0] Q;
reg flag;
initial
begin
flag=l;
end
always @ (posedge elk or negedge nclr) begin
if (!nclr)
Q <= 4'b0000; //clear
else
casez({s,t})
2'b00: if (Q==9)
begin
Q <= 4f bl000;
flag <= 0;
end
else if(Q==0)
begin
Q<= 4'b0001;
flag <= 1; end
else if(flag==l) Q<= Q
+ l;
else
Q <= Q -1;
2f b01: if (Q==9)
Q <= 4f b0000;
else
Q <= Q + 1;
2'bl?: if (Q==0)
Q<= 4f bl001;
else
Q <= Q -1;
endcase
end
endmodule
3)分频模块
module freqDiv(in_50MHz,out_lHz); input in_50MHz;
output out_lHz;
reg out_lHz;
reg [25:0]cnt;
always @ (posedge in_50MHz) begin
ent <= ent + l'Bl;
if(cnt v 26f d2*******)
out_lHz <=0;
else
begin
if(cnt >= 26^50000000) cut
<= 26'bO;
else out_lHz <=1;
end
end
endmodule
4)显示模块
module SEG7_LUT(oSEG 19iDIG);
input [3:0]iDIG;
output [7:0] oSEGl; reg [7:0]oSEG; wire [7:0] oSEGl;
always @(iDIG)
begin
case(iDIG)
4'hO: oSEG = 8^00111111;
4'hl: oSEG = 8^00000110;
4'h2: oSEG = 8 b01011011;
4'h3: oSEG = 8^01001111;
4'h4: oSEG = 8^01100110;
4'h5: oSEG = 8 b0110U01;
4'h6: oSEG = 8 b01111101;
4'h7: oSEG = 8^00000111;
4'h8: oSEG = 8^01111111;
4'h9: oSEG = 8^01101111;
4'ha: oSEG = 8^01110111;
4'hb: oSEG = 8 b01111100;
4'hc: oSEG = 8^00111001;
4'hd: oSEG = 8^01011110;
4'he: oSEG = 8f b01111001;
4f hf: oSEG = 8^01110001;
endcase
end
assign oSEGl=〜oSEG;
endmodule
4.3电路编译
4.4电路仿真
选择仿真参数
保存波形文件Q_DEC0DE_3& vwf
点击菜单项Processing->Generate Functional Simulation Netlist,产生功能仿真网表点击菜单项Processing->Start Simulation启动功能仿真
仿真波形如下:
E(2)42
CLR二0时,清零:
» d o
LrLrLrLrLrLrLrLrLrLruTrLnj^LrLrLrLrLrLTLrLrLrL crl
CLR=1, S=0, T=0,自动计数(0-9, 9-0,……):
下载程序:在Programmer 界面 中, 将.sof 文件列表中 Program/Configure 属性勾上
再点击Start 按钮,开始下载程序。

CLR=1, S=l, T=0,手动计数(9-0, 9-0, .... ):
CLR=1, S=l, T=l,手动计数(9-0, 9-0,……):
4. 5器件的编程下
i
完成后, 下载程序显不100%
最终调试,在DE0实验板上,扳动SW2, SW1 和SW0开关,可以看到译码
之后的LEDR7-LEDR0红色LED发光输出。

例如:扳动SW1和SW0时仅有LEDR3 亮。

5实验总结
本次实验是对编程语言Verilog HDL的学习和
巩固,通过不用做电路图而直接找各个工作点以及门电路之间的关系写出语言描述,再根据语言描述仿真看结果是否符合预期结果,这在一定的程度上节省了画图所浪费的时间,效率较高,另外这是一门重要且比较基础的语言,通过这次实践让自己更加熟悉
同时,学会了对Quartus这个软件的基本操作
另外,本次实验应用层次化的设计输入方
法:“自顶向下”的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计,由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

相关文档
最新文档