【连载】 FPGA Verilog HDL 系列实例--------8-3编码器

Verilog HDL 之 8-3编码器

原理:

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

【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第1张图片

实验环境:

  硬件: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所示。

 【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第2张图片

            图1.1 在Quartus II中新建工程

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

 【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第3张图片

                             图1.2 选择FPGA器件

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

 【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第4张图片

                         图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所示

【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第5张图片

                      图1.5 引脚分配

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

【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第6张图片

  此操作原因

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

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

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

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

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

【连载】 FPGA Verilog HDL 系列实例--------8-3编码器_第7张图片

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

实验结果:

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

你可能感兴趣的:(Verilog)