当前位置:   article > 正文

Quartus和ModelSim软件的使用(3-8译码器)_quartus 3线 8线译码器模块

quartus 3线 8线译码器模块

一、软件介绍

1、Quartus II 

       该软件是Altera公司推出的综合性CPLD/FPGA开发软件,软件支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

       其下载连接如下:

https://www.intel.cn/content/www/cn/zh/content-details/653796/quartus-ii-handbook-version-13-1.html

2、ModelSim

       其是Mentor公司的最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

       其下载连接如下:

该软件ModelSim Student Edition 暂时不可在官网下载,可以自行在B站或者各大网站寻找资源进行下载使用。

二、三八译码器

       3-8线译码器是一种全译码器(二进制译码器)。输入是3个脚(3位二进制代码),输出是8个脚(表示10进制,是根据输入的二进制数来输出。3位二进制代码共有8种组合,故输出是与这8种组合一一对应的8个输出信号)

我们以a、b、c作为输出,Y0 -- Y7作为输出,

当:

abc = 000 时,Y0 = 1,其余为0;
abc = 001 时,Y1 = 1,其余为0;
abc = 010 时,Y2 = 1,其余为0;
abc = 011 时,Y3 = 1,其余为0;
abc = 100 时,Y4 = 1,其余为0;
abc = 101 时,Y5 = 1,其余为0;
abc = 110 时,Y6 = 1,其余为0;
abc = 111 时,Y7 = 1,其余为0。

电路图、真值表

其电路图以及真值表如下图所示: 

 

 生成RTL

代码:

  1. module Decoder_3to8 (
  2. input [2:0] input_bits,
  3. output [7:0] output_bits
  4. );
  5. assign output_bits[0] = (input_bits == 3'b000) ? 1'b1 : 1'b0;
  6. assign output_bits[1] = (input_bits == 3'b001) ? 1'b1 : 1'b0;
  7. assign output_bits[2] = (input_bits == 3'b010) ? 1'b1 : 1'b0;
  8. assign output_bits[3] = (input_bits == 3'b011) ? 1'b1 : 1'b0;
  9. assign output_bits[4] = (input_bits == 3'b100) ? 1'b1 : 1'b0;
  10. assign output_bits[5] = (input_bits == 3'b101) ? 1'b1 : 1'b0;
  11. assign output_bits[6] = (input_bits == 3'b110) ? 1'b1 : 1'b0;
  12. assign output_bits[7] = (input_bits == 3'b111) ? 1'b1 : 1'b0;
  13. endmodule

测试代码:

  1. // Copyright (C) 1991-2013 Altera Corporation
  2. // Your use of Altera Corporation's design tools, logic functions
  3. // and other software and tools, and its AMPP partner logic
  4. // functions, and any output files from any of the foregoing
  5. // (including device programming or simulation files), and any
  6. // associated documentation or information are expressly subject
  7. // to the terms and conditions of the Altera Program License
  8. // Subscription Agreement, Altera MegaCore Function License
  9. // Agreement, or other applicable license agreement, including,
  10. // without limitation, that your use is for the sole purpose of
  11. // programming logic devices manufactured by Altera and sold by
  12. // Altera or its authorized distributors. Please refer to the
  13. // applicable agreement for further details.
  14. // *****************************************************************************
  15. // This file contains a Verilog test bench template that is freely editable to
  16. // suit user's needs .Comments are provided in each section to help the user
  17. // fill out necessary details.
  18. // *****************************************************************************
  19. // Generated on "12/16/2023 19:59:12"
  20. // Verilog Test Bench template for design : Decoder_3to8
  21. //
  22. // Simulation tool : ModelSim (Verilog)
  23. //
  24. `timescale 1 ps/ 1 ps
  25. module Decoder_3to8_vlg_tst();
  26. // constants
  27. // general purpose registers
  28. reg eachvec;
  29. // test vector input registers
  30. reg [2:0] input_bits;
  31. // wires
  32. wire [7:0] output_bits;
  33. // assign statements (if any)
  34. Decoder_3to8 i1 (
  35. // port map - connection between master ports and signals/registers
  36. .input_bits(input_bits),
  37. .output_bits(output_bits)
  38. );
  39. initial
  40. begin
  41. $display("Running testbench");
  42. // Test case 1
  43. input_bits = 3'b000;
  44. #10;
  45. if (output_bits !== 8'b00000001) $fatal("Test case 1 failed");
  46. // Test case 2
  47. input_bits = 3'b001;
  48. #10;
  49. if (output_bits !== 8'b00000010) $fatal("Test case 2 failed");
  50. // Test case 3
  51. input_bits = 3'b010;
  52. #10;
  53. if (output_bits !== 8'b00000100) $fatal("Test case 3 failed");
  54. // Test case 4
  55. input_bits = 3'b011;
  56. #10;
  57. if (output_bits !== 8'b00001000) $fatal("Test case 4 failed");
  58. // Test case 5
  59. input_bits = 3'b100;
  60. #10;
  61. if (output_bits !== 8'b00010000) $fatal("Test case 5 failed");
  62. // Test case 6
  63. input_bits = 3'b101;
  64. #10;
  65. if (output_bits !== 8'b00100000) $fatal("Test case 6 failed");
  66. // Test case 7
  67. input_bits = 3'b110;
  68. #10;
  69. if (output_bits !== 8'b01000000) $fatal("Test case 7 failed");
  70. // Test case 8
  71. input_bits = 3'b111;
  72. #10;
  73. if (output_bits !== 8'b10000000) $fatal("Test case 8 failed");
  74. end
  75. always
  76. begin
  77. @eachvec;
  78. end
  79. endmodule

波形图:

 后期建议大家多加强软件运用,环境的调试,防止因为软件设置等其他原因造成无法生成图像或者波形图之类的问题出现,同时也是为了后续实验能更快速完成。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/707877
推荐阅读
相关标签
  

闽ICP备14008679号