[verilog] 3—8译码器仿真错误

[复制链接]
1358|0
 楼主| shgij123 发表于 2022-7-20 00:36 | 显示全部楼层 |阅读模式
本帖最后由 shgij123 于 2022-7-20 00:44 编辑

环境:Quartus13.1+modelsim2020.4
问题:使用rtl联合仿真,成功启动modelsim但是波形有问题,所有输入输出端的值均为'x'


源代码:

  1. `timescale 1ns/1ns
  2. module decoder_38(
  3.    input             E1_n   ,
  4.    input             E2_n   ,
  5.    input             E3     ,
  6.    /* 三个使能输入端E1、E2、E3,
  7.         E1高电平有效,E2\E3低电平有效
  8.         三个信号均为有效时输出端才输出正确信号
  9.    */
  10.    input             A0     ,
  11.    input             A1     ,
  12.    input             A2     ,
  13.    /*三个数据输入端,序号越大权值越大,高电平有效*/
  14.    output wire       Y0_n   ,  
  15.    output wire       Y1_n   ,
  16.    output wire       Y2_n   ,
  17.    output wire       Y3_n   ,
  18.    output wire       Y4_n   ,
  19.    output wire       Y5_n   ,
  20.    output wire       Y6_n   ,
  21.    output wire       Y7_n
  22.         /*数据输出端,权值排列同输入端,高电平有效*/
  23. );
  24.     reg Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r;
  25.     always@(*) begin
  26.         casez({E3, E2_n, E1_n, A2, A1, A0})
  27.             6'bx1x_xxx: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0000;
  28.             6'bxx1_xxx: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0000;
  29.             6'b0xx_xxx: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0000;
  30.             6'b100_000: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b1000_0000;
  31.             6'b100_001: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0100_0000;
  32.             6'b100_010: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0010_0000;
  33.             6'b100_011: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0001_0000;
  34.             6'b100_100: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_1000;
  35.             6'b100_101: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0100;
  36.             6'b100_110: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0010;
  37.             6'b100_111: {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0001;
  38.             default:    {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r} = 8'b0000_0000;
  39.         endcase
  40.     end
  41.     assign {Y0_n, Y1_n, Y2_n, Y3_n, Y4_n, Y5_n, Y6_n, Y7_n} = {Y0_r, Y1_r, Y2_r, Y3_r, Y4_r, Y5_r, Y6_r, Y7_r};
  42. endmodule

测试平台:
  1. `timescale 1 ns/ 1 ns
  2. module decoder_38_vlg_tst();
  3. // constants                                          
  4. // general purpose registers
  5. reg eachvec;
  6. // test vector input registers
  7. reg A0;
  8. reg A1;
  9. reg A2;
  10. reg E1_n;
  11. reg E2_n;
  12. reg E3;
  13. // wires                                               
  14. wire Y0_n;
  15. wire Y1_n;
  16. wire Y2_n;
  17. wire Y3_n;
  18. wire Y4_n;
  19. wire Y5_n;
  20. wire Y6_n;
  21. wire Y7_n;

  22. // assign statements (if any)                          
  23. decoder_38 i1 (
  24. // port map - connection between master ports and signals/registers   
  25.         .A0(A0),
  26.         .A1(A1),
  27.         .A2(A2),
  28.         .E1_n(E1_n),
  29.         .E2_n(E2_n),
  30.         .E3(E3),
  31.         .Y0_n(Y0_n),
  32.         .Y1_n(Y1_n),
  33.         .Y2_n(Y2_n),
  34.         .Y3_n(Y3_n),
  35.         .Y4_n(Y4_n),
  36.         .Y5_n(Y5_n),
  37.         .Y6_n(Y6_n),
  38.         .Y7_n(Y7_n)
  39. );
  40. initial                                                
  41. begin                                                  
  42.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'bx1x_xxx;
  43.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'bxx1_xxx;
  44.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b0xx_xxx;
  45.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_000;
  46.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_001;
  47.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_010;
  48.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_011;
  49.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_100;
  50.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_101;
  51.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_110;
  52.         #100 {E3,E2_n,E1_n,A2,A1,A0}=6'b100_111;
  53.         #200 $stop;                     
  54. end                                                   
  55.                                           
  56. endmodule







您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

0

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部