zoukankan      html  css  js  c++  java
  • 【连载】 FPGA Verilog HDL 系列实例83编码器

    Verilog HDL 之 8-3编码器

    原理:

      在数字系统中,常常需要将某一信息(输入)变换为某一特定的代码(输出)。把二进制码按一定的规律排列,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或是控制信号)称为编码。具有编码功能的逻辑电路称为编码器。编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。例如8线-3线编码器和10线-4线编码器分别有8输入、3位输出和10位输入、4位输出。下面是8-3编码器的真值表。

    实验环境:

      硬件:AR2000核心板、SOPC-MBoard板、PC 机、ByteBlaster II 下载电缆
      软件:ModelSim 、Altera Quartus II 7.2 集成开发环境。 

    实验步骤:

    1.打开Quartus II 7.2软件,选择File | New Project Wizard新建一个工程,在对话框中第一行选择工程路径,并为该工程新建一个文件夹。本例中第二行输入工程名bm8_3;第三行是工程顶层设计文件名,该顶层设计文件名一定要与设计文件中模块名module一致,可以与工程名不同,但一般都和工程名一致 。如图1.1所示。

     

                图1.1 在Quartus II中新建工程

     2.单击“Next”,此对话框是向工程中添加设计文件的。现在还没有写设计文件,所以没有文件可以添加;直接单击“Next”,进入器件选择对话框。在Family下拉菜单中选择Cyclone II 系列。然后在Filters下的Package下拉菜单中选择封装形式FBGA,Pin count下拉菜单中选择管脚数672,Speed grade下拉菜单中选择速度级别8;然后在Available devices中选择
    EP2C35F672C8器件。如图1.2所示。

     

                                 图1.2 选择FPGA器件

     3.单击Finish,建立好工程。向工程中添加设计文件,选择File | New ,在New对话框中选择Device Design Files下的Verilog HDL File,单击OK,完成新建设计文件。如图1.3所示。

     

                             图1.3 添加设计文件

     4.向设计文件中输入Verilog代码。

     1 //--------------------------------------------------------------------------------------------------
    2 //
    3 // Title : BM8_3
    4 // Design : exp1
    5 // Author : wangliang
    6 //
    7 //-------------------------------------------------------------------------------------------------
    8 //
    9 // Description :
    10 //
    11 //-------------------------------------------------------------------------------------------------
    12 `timescale 1 ns / 1 ps
    13
    14 module bm8_3 ( a ,b );
    15
    16 input [7:0] a ;
    17 wire [7:0] a ;
    18
    19 output [2:0] b ;
    20 reg [2:0] b;
    21 always @ ( a )
    22 begin
    23 case ( a )
    24 8'b0000_0001 : b<=3'b000;
    25 8'b0000_0010 : b<=3'b001;
    26 8'b0000_0100 : b<=3'b010;
    27 8'b0000_1000 : b<=3'b011;
    28 8'b0001_0000 : b<=3'b100;
    29 8'b0010_0000 : b<=3'b101;
    30 8'b0100_0000 : b<=3'b110;
    31 8'b1000_0000 : b<= 3'b111;
    32 default : b<= 3'b000;
    33 endcase
    34 end
    35
    36 // -- Enter your statements here -- //
    37
    38 endmodule

    5. 编译。点击图1.4中的第二个按钮。

                      图1.4

    6. 分配引脚。 选择Assignments下的Pins选项,进入引脚分配界面,或者对该工程的.tcl文件进行直接修改。分配好的引脚如图1.5所示

                          图1.5 引脚分配

    7. 将在Assignments|Device 里面打开Device& Pin Options选项,在Unused Pins页里面的选择第一项As input。每次新建的工程编译前必须设置这个选项。

      此操作原因

      (1)由于开发板FPGA芯片的许多引脚已经分配给如FLASH存储器等的外围器件或者开发板的某些开关,当运行自己开发的逻辑时,必须把FPGA尚未分配的引脚与测试电路无关的链接断开,否则的那个FPGA复位后这些固定的链接会破坏任务的执行,所以,必须把不用的引脚设置成三态输入信号。

      (2)SRAM等设备是低电平其idong,置成高阻态可防止错误地启动类似SRAM的设备。

      (3)为了降低功耗,一般我们的设计都比较小,未用管脚较多,而未用管脚若默认为输出低电平,则会形成电流回路,产生较大的功耗。

    8. 全部编译。点击图1.4中的第一个按钮。

    9. 烧写到目标板。点击图1.4中的倒数第三个按钮,等烧写完毕查看实验板结果,并且可以和仿真结果进行比对。(仿真方法请参考链接。。。)

      将开关选择跳线选择至低8位拨动开关,利用低BIT7~BIT0位作为输入,LED2、LED1、LED0作为输出(图中红线标出部分)。

    实验结果:

      BIT7~BIT0当中的一个打开时,LED的灯对应亮着,如果有多个打开,则LED的灯是灭着的。

  • 相关阅读:
    第一次通过CLR Profile解决内存占用过高的问题
    未处理的异常
    var和dynamic的区别及如何正确使用dynamic?
    C#添加本地打印机
    CSS样式
    CSS选择器
    Winform 数据绑定
    [CLR via C#]值类型的装箱和拆箱
    Java Object
    设计模式_创建型模式
  • 原文地址:https://www.cnblogs.com/kongtiao/p/2110499.html
Copyright © 2011-2022 走看看