verilog实现1位2选1数据选择器及数码管数字显示功能以及相应fpga器件开发

verilog实现1位2选1数据选择器及数码管数字显示功能以及相应fpga器件开发

文章目录

  • verilog实现1位2选1数据选择器及数码管数字显示功能以及相应fpga器件开发
    • 一、实验目的
    • 二、实验内容与要求
    • 三、实验内容与步骤
      • 1. verilog三种方式实现1位2选1数据选择器的功能
        • 1.1 结构级建模
          • 1.1.1 代码
          • 1.1.2 波形
        • 1.2 门级建模
          • 1.2.1 代码
          • 1.2.2 波形
        • 1.3 数据流级建模
          • 1.3.1 代码
          • 1.3.2 波形
        • 1.4 Test代码
      • 2. FPGA器件开发流程
        • 2.1 新建工程
        • 2.2 创建新的Verilog源文件
        • 2.3 基于Xilinx XST的综合
        • 2.4 设计仿真
        • 2.5 创建约束
        • 2.6 执行设计并生成下载的bit文件
    • 四、拓展实验
      • 1. 实验内容和要求
      • 2. 实验内容和步骤
        • 2.1 verilog实现功能
          • 2.1.1 代码
          • 2.1.2 Test代码
          • 2.1.3 波形
        • 2.2 FPGA开发

一、实验目的

  • 学习使用verilog HDL描述数字逻辑电路与系统的方法;
  • 掌握采用可编程逻辑器件实现数字逻辑电路与系统的方法;
  • 学习并掌握采用Xilinx_ISE软件开发可编程器件的过程。

二、实验内容与要求

使用ISE软件,通过三种编程方式实现1位2选1数据选择器的功能,并且下载到fpga验证功能;

三、实验内容与步骤

1. verilog三种方式实现1位2选1数据选择器的功能

1.1 结构级建模

1.1.1 代码
`timescale 1ns / 1psmodule select2_1(input wire A,input wire B,input wire sel,output reg o);always @(*) begino = (sel) ? A : B;endendmodule
1.1.2 波形

在这里插入图片描述

1.2 门级建模

1.2.1 代码
`timescale 1ns / 1psmodule select2_1(input wire A,input wire B,input wire sel,output tri o);bufif1(o, A, sel);bufif0(o, B, sel);endmodule
1.2.2 波形

在这里插入图片描述

1.3 数据流级建模

1.3.1 代码
`timescale 1ns / 1psmodule select2_1(input wire A,input wire B,input wire sel,output wire o
);assign o = (sel) ? A : B;endmodule
1.3.2 波形

在这里插入图片描述

1.4 Test代码

`timescale 1ns / 1psmodule test;// Inputsreg A;reg B;reg sel;// Outputswire o;// Instantiate the Unit Under Test (UUT)select2_1 uut (.A(A), .B(B), .sel(sel), .o(o));initial begin// Initialize InputsA = 0;B = 1;sel = 0;// Wait 100 ns for global reset to finish#100;A = 0;B = 1;sel = 1;// Wait 100 ns for global reset to finish#100;A = 1;B = 0;sel = 0;// Wait 100 ns for global reset to finish#100;A = 1;B = 0;sel = 1;// Wait 100 ns for global reset to finish#100;// Add stimulus hereendendmodule

2. FPGA器件开发流程

2.1 新建工程

​ 须选择与开发板相对应的 FPGA 器件型号,确认项目设定的所有信息准确无误即可finish,否则则需重新设定。

2.2 创建新的Verilog源文件

​ 创建新的verilog文件,确认输入输出的信号,修改完善设计内容,实现我们所需要完成的两输入选择功能,代码见上文。

2.3 基于Xilinx XST的综合

​ 代码写完之后,可进行句法检查。点开Synthesize-xst,双击Check Syntax。如果语法没错,是绿色的打勾,否则会有红色的错误提示。

2.4 设计仿真

​ 当检查输入源程序句法没有错误后,一般在设计综合之前做行为仿真,以验证代码的行为功能是否正确,利用测试模板( Testbench )来进行。

​ 由于自动生成的Testbench 并不能满足我们所需要的所有测试情况要求,所以重新改写Testbench,使之达到我们的需求。

​ 保存test.v。打开ISE仿真器,得到仿真结果,将图形界面缩放到合适大小,截图见上文。

2.5 创建约束

​ 采用图形化界面设置的方式进行约束,将各个端口与fpga的管脚准确地约束在一起,并保存ucf文件。

2.6 执行设计并生成下载的bit文件

​ 将设计并生成下载的bit文件下载到实验板上,进行实验验证,由授课老师验收。

四、拓展实验

1. 实验内容和要求

  • 使用verilog语言实现3-8译码器,并在数码管上显示一位十进制数字的功能;
  • 使用Xilinx_ISE软件和fpga开发板实现显示功能。

2. 实验内容和步骤

2.1 verilog实现功能

2.1.1 代码
`timescale 1ns / 1psmodule BinToDec(input LE,input BL_,input LT_,input AN0,input DP_,input [3:0] D,output reg [6:0] L);
/*说明:
输入端:LE BL_ LT_决定74HC4511的工作状态,[3:0]D只有前十个数能够得到相应的输出,其余全部是无效输出;
输出端:[6:0]L从高位到低位分别代表了a-g,决定灯的亮与灭,低电平有效。
*/always @(*) beginif (LE==0&&BL_==1&<_==1&&AN0==0&&DP_==0) begin // AN0 == 0case(D[3:0])4'b0000: L[6:0]<=7'b0000001;4'b0001: L[6:0]<=7'b1001111;4'b0010: L[6:0]<=7'b0010010;4'b0011: L[6:0]<=7'b0000110;4'b0100: L[6:0]<=7'b1001100;4'b0101: L[6:0]<=7'b0100100;4'b0110: L[6:0]<=7'b1100000;4'b0111: L[6:0]<=7'b0001111;4'b1000: L[6:0]<=7'b0000000;4'b1001: L[6:0]<=7'b0000100;   default  L[6:0]<=7'b1111111; endcaseendelse if (LT_==0&&AN0==0&&DP_==0) L[6:0]<=7'b0000000;else if (BL_==0&<_==1&&AN0==0&&DP_==0) L[6:0]<=7'b1111111;else L<=L;//也可以使用else和casex语句
end
endmodule// L[6:0]从高到低对应CA CB CC到CF CG
//AN0 N6    CA L3
2.1.2 Test代码
`timescale 1ns / 1psmodule test;// Inputsreg LE;reg BL_;reg LT_;reg AN0;reg DP_;reg [3:0] D;// Outputswire [6:0] L;// Instantiate the Unit Under Test (UUT)BinToDec uut (.LE(LE), .BL_(BL_), .LT_(LT_), .AN0(AN0), .DP_(DP_), .D(D), .L(L));initial begin// Initialize InputsLE = 0;BL_ = 1;LT_ = 0;AN0 = 0;DP_ = 0;D[3:0] = 4'b0000;#100;LE = 0;BL_ = 1;LT_ = 1;AN0 = 0;DP_ = 0;D[3:0] = 4'b0000;// Wait 100 ns for global reset to finish#100;LE = 0;BL_ = 1;LT_ = 1;AN0 = 0;DP_ = 0;D[3:0] = 4'b0110;// Wait 100 ns for global reset to finish#100;LE = 0;BL_ = 1;LT_ = 1;AN0 = 0;DP_ = 0;D[3:0] = 4'b1000;// Wait 100 ns for global reset to finish#100;LE = 0;BL_ = 0;LT_ = 1;AN0 = 0;DP_ = 0;D[3:0] = 4'b0000;#100;endendmodule
2.1.3 波形

在这里插入图片描述

2.2 FPGA开发

根据实操得到开发板数码管显示如下图,待更新。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部