7回答

1收藏

STEP BY STEP! 带你快速上手小脚丫FPGA开发板之——2.3-8译码器!

#竞赛 #竞赛 4225 人阅读 | 7 人回复 | 2017-08-11

本帖最后由 _张泽_ 于 2017-8-14 09:24 编辑

搞定了LED之后,我们就可以试着做一个3-8译码器,来巩固一下组合逻辑的Verilog描述方法。

分享到:
回复

使用道具 举报

回答|共 7 个

倒序浏览

沙发

_张泽_

发表于 2017-8-11 13:42:22 | 只看该作者


在这个实验里我们将学习如何用Verilog来实现组合逻辑。
组合逻辑电路是数字电路的重要部分,电路的输出只与输入的当前状态相关的逻辑电路,常见的有选择器、比较器、译码器、编码器、编码转换等等。在本实验里以最常见的3-8译码器为例说明如何用Verilog实现。3-8译码器的真值表如下:
从前面的实验可以知道,当FPGA输出信号到LED为高电平时LED熄灭,反之LED变亮。同时我们可以以开关的信号模拟3-8译码器的输入,这样控制开关我们就能控制特定的LED变亮。

  1. // ********************************************************************
  2. // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
  3. // ********************************************************************
  4. // File name    : decode38.v
  5. // Module name  : decode38
  6. // Author       : STEP
  7. // Description  : 3-8decode control LED
  8. // Web          : www.stepfpga.com
  9. //
  10. // --------------------------------------------------------------------
  11. // Code Revision History :
  12. // --------------------------------------------------------------------
  13. // Version: |Mod. Date:   |Changes Made:
  14. // V1.0     |2017/03/02   |Initial ver
  15. // --------------------------------------------------------------------
  16. // Module Function:利用3路开关的状态作为输出,通过3-8译码实现控制LED灯的显示。

  17. module decode38 (sw,led);
  18. input [2:0] sw;                                                        //开关输入信号,利用了其中3个开关作为3-8译码器的输入
  19.         output [7:0] led;                                                //输出信号控制特定LED

  20.         reg [7:0] led;                                                  //定义led为reg型变量,在always过程块中只能对reg型变量赋值

  21.         //always过程块,括号中sw为敏感变量,当sw变化一次执行一次always中所有语句,否则保持不变
  22.         always @ (sw)
  23.         begin
  24.                 case(sw)                                                   //case语句,一定要跟default语句
  25.                         3'b000:        led=8'b0111_1111;                         //条件跳转,其中“_”下划线只是为了阅读方便,无实际意义  
  26.                         3'b001:        led=8'b1011_1111;                         //位宽'进制+数值是Verilog里常数的表达方法,进制可以是b、o、d、h(二、八、十、十六进制)
  27.                         3'b010:        led=8'b1101_1111;
  28.                         3'b011:        led=8'b1110_1111;
  29.                         3'b100:        led=8'b1111_0111;
  30.                         3'b101:        led=8'b1111_1011;
  31.                         3'b110: led=8'b1111_1101;
  32.                         3'b111:        led=8'b1111_1110;
  33.                         default: ;
  34.                 endcase
  35.         end

  36. endmodule
复制代码
板凳

_张泽_

发表于 2017-8-11 14:12:57 | 只看该作者

本帖最后由 _张泽_ 于 2017-8-14 09:24 编辑

完成代码并综合,之后就是分配管脚,这一步千万不要忘记,如果忘记会导致综合器将管脚自动分配,这样程序肯定是实现不了的了。
分配管脚图如下:


下载完程序后就可以实现3个开关控制不同LED灯的显示,3-8译码器完成。
地板

jinglixixi

发表于 2017-8-12 12:23:21 | 只看该作者

学习了!!!
5#

不留~丶痕迹

发表于 2017-10-8 21:29:36 | 只看该作者

不错不错,本小白跟着学
6#

ky123

发表于 2017-10-9 08:58:26 | 只看该作者

不留~丶痕迹 发表于 2017-10-8 21:29
不错不错,本小白跟着学

给你参考
http://www.stepfpga.com/doc/step ... 8%E6%95%99%E7%A8%8B
然后说,早安~
7#

ky123

发表于 2017-10-9 08:58:46 | 只看该作者

jinglixixi 发表于 2017-8-12 12:23
学习了!!!

这个比较全
http://www.stepfpga.com/doc/step ... 8%E6%95%99%E7%A8%8B
然后说,早安~
8#

jinglixixi

发表于 2017-10-9 17:37:23 | 只看该作者

ky123 发表于 2017-10-9 08:58
这个比较全
http://www.stepfpga.com/doc/step-mxo2%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B
然后说,早安~ ...

谢谢!!!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条