在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: dxeacer

[求助] 求一个3位二进制转温度计码的veriloga

[复制链接]
发表于 2023-3-29 15:44:53 | 显示全部楼层
感谢,学习了
发表于 2023-3-29 17:28:17 | 显示全部楼层
看看先
发表于 2023-4-10 11:32:53 | 显示全部楼层


远上寒杉 发表于 2019-9-9 10:46
没编译,应该差不多。

如果需要其他位数的译码器直接改 N 值就行了。


请问:
第13行中 vdd/2.0 是什么意思呢?
vdd是代表电源吗?如果电源电压1.8v,这代码如何理解呢


发表于 2023-5-25 20:25:47 | 显示全部楼层
十分感谢  
发表于 2023-7-20 18:00:58 | 显示全部楼层


dxeacer 发表于 2019-9-10 14:45
谢谢大神,d=d*2上面,改成i>=0就成功了


为什么我写到cadence里面还是用不了呢,求助
发表于 2024-7-22 10:19:39 | 显示全部楼层


jzr1989 发表于 2019-9-7 15:03
Y0=I0||I1||I2;
Y1=I1||I2;
Y2=I0&&I1||I2;


I3        I2        I1        I0        Y14        Y13        Y12        Y11        Y10        Y9        Y8        Y7        Y6        Y5        Y4        Y3        Y2        Y1        Y0
0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
0        0        0        1        0        0        0        0        0        0        0        0        0        0        0        0        0        0        1
0        0        1        0        0        0        0        0        0        0        0        0        0        0        0        0        0        1        1
0        0        1        1        0        0        0        0        0        0        0        0        0        0        0        0        1        1        1
0        1        0        0        0        0        0        0        0        0        0        0        0        0        0        1        1        1        1
0        1        0        1        0        0        0        0        0        0        0        0        0        0        1        1        1        1        1
0        1        1        0        0        0        0        0        0        0        0        0        0        1        1        1        1        1        1
0        1        1        1        0        0        0        0        0        0        0        0        1        1        1        1        1        1        1
1        0        0        0        0        0        0        0        0        0        0        1        1        1        1        1        1        1        1
1        0        0        1        0        0        0        0        0        0        1        1        1        1        1        1        1        1        1
1        0        1        0        0        0        0        0        0        1        1        1        1        1        1        1        1        1        1
1        0        1        1        0        0        0        0        1        1        1        1        1        1        1        1        1        1        1
1        1        0        0        0        0        0        1        1        1        1        1        1        1        1        1        1        1        1
1        1        0        1        0        0        1        1        1        1        1        1        1        1        1        1        1        1        1
1        1        1        0        0        1        1        1        1        1        1        1        1        1        1        1        1        1        1
1        1        1        1        1        1        1        1        1        1        1        1        1        1        1        1        1        1        1
这个逻辑表达式是什么样的?

发表于 2024-7-22 10:35:13 | 显示全部楼层


jjooee 发表于 2024-7-22 10:19
I3        I2        I1        I0        Y14        Y13        Y12        Y11        Y10        Y9        Y8        Y7        Y6        Y5        Y4        Y3        Y2        Y1        Y0
0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0         ...


module dec_thermo_4b (
    input [3:0] a,
    output reg [14:0] yn,
    output [14:0] y
);

    always @(*) begin
        case (a)
            4'b0000: yn = 15'b1111_1111_1111_111;
            4'b0001: yn = 15'b1111_1111_1111_110;
            4'b0010: yn = 15'b1111_1111_1111_100;
            4'b0011: yn = 15'b1111_1111_1111_000;
            4'b0100: yn = 15'b1111_1111_1110_000;
            4'b0101: yn = 15'b1111_1111_1100_000;
            4'b0110: yn = 15'b1111_1111_1000_000;
            4'b0111: yn = 15'b1111_1111_0000_000;
            4'b1000: yn = 15'b1111_1110_0000_000;
            4'b1001: yn = 15'b1111_1100_0000_000;
            4'b1010: yn = 15'b1111_1000_0000_000;
            4'b1011: yn = 15'b1111_0000_0000_000;
            4'b1100: yn = 15'b1110_0000_0000_000;
            4'b1101: yn = 15'b1100_0000_0000_000;
            4'b1110: yn = 15'b1000_0000_0000_000;
            4'b1111: yn = 15'b0000_0000_0000_000;
        endcase
    end

    assign y = ~yn;

endmodule






/* Generated by Yosys 0.42+30 (git sha1 6c8ae44ae, x86_64-w64-mingw32-g++ 13.2.1 -Os) */

module dec_thermo_4b(a, yn, y);
  wire _00_;
  wire _01_;
  wire _02_;
  wire _03_;
  wire _04_;
  wire _05_;
  wire _06_;
  wire _07_;
  wire _08_;
  wire _09_;
  wire _10_;
  wire _11_;
  wire _12_;
  wire _13_;
  wire _14_;
  wire _15_;
  wire _16_;
  wire _17_;
  wire _18_;
  wire _19_;
  wire _20_;
  wire _21_;
  wire _22_;
  wire _23_;
  wire _24_;
  wire _25_;
  wire _26_;
  wire _27_;
  wire _28_;
  wire _29_;
  wire _30_;
  wire _31_;
  wire _32_;
  wire _33_;
  wire _34_;
  wire _35_;
  wire _36_;
  wire _37_;
  wire [14:0] _38_;
  wire [14:0] _39_;
  wire [14:0] _40_;
  input [3:0] a;
  wire [3:0] a;
  output [14:0] y;
  wire [14:0] y;
  output [14:0] yn;
  wire [14:0] yn;
  INVX1 _41_ (
    .A(_02_),
    .Y(_04_)
  );
  INVX1 _42_ (
    .A(_03_),
    .Y(_35_)
  );
  INVX1 _43_ (
    .A(_01_),
    .Y(_05_)
  );
  NAND2X1 _44_ (
    .A(_04_),
    .B(_35_),
    .Y(_17_)
  );
  INVX1 _45_ (
    .A(_17_),
    .Y(_31_)
  );
  NAND2X1 _46_ (
    .A(_05_),
    .B(_31_),
    .Y(_15_)
  );
  INVX1 _47_ (
    .A(_15_),
    .Y(_29_)
  );
  NOR2X1 _48_ (
    .A(_01_),
    .B(_00_),
    .Y(_06_)
  );
  NAND2X1 _49_ (
    .A(_31_),
    .B(_06_),
    .Y(_09_)
  );
  INVX1 _50_ (
    .A(_09_),
    .Y(_23_)
  );
  NAND2X1 _51_ (
    .A(_01_),
    .B(_00_),
    .Y(_07_)
  );
  NAND2X1 _52_ (
    .A(_31_),
    .B(_07_),
    .Y(_16_)
  );
  INVX1 _53_ (
    .A(_16_),
    .Y(_30_)
  );
  AOI21X1 _54_ (
    .A(_02_),
    .B(_01_),
    .C(_03_),
    .Y(_33_)
  );
  INVX1 _55_ (
    .A(_33_),
    .Y(_19_)
  );
  OAI21X1 _56_ (
    .A(_04_),
    .B(_06_),
    .C(_35_),
    .Y(_18_)
  );
  INVX1 _57_ (
    .A(_18_),
    .Y(_32_)
  );
  OAI21X1 _58_ (
    .A(_04_),
    .B(_07_),
    .C(_35_),
    .Y(_20_)
  );
  INVX1 _59_ (
    .A(_20_),
    .Y(_34_)
  );
  NAND2X1 _60_ (
    .A(_03_),
    .B(_00_),
    .Y(_08_)
  );
  NOR2X1 _61_ (
    .A(_04_),
    .B(_35_),
    .Y(_11_)
  );
  INVX1 _62_ (
    .A(_11_),
    .Y(_25_)
  );
  AOI21X1 _63_ (
    .A(_04_),
    .B(_05_),
    .C(_35_),
    .Y(_22_)
  );
  INVX1 _64_ (
    .A(_22_),
    .Y(_37_)
  );
  NAND2X1 _65_ (
    .A(_08_),
    .B(_37_),
    .Y(_21_)
  );
  INVX1 _66_ (
    .A(_21_),
    .Y(_36_)
  );
  AOI21X1 _67_ (
    .A(_04_),
    .B(_07_),
    .C(_35_),
    .Y(_10_)
  );
  INVX1 _68_ (
    .A(_10_),
    .Y(_24_)
  );
  NOR2X1 _69_ (
    .A(_06_),
    .B(_25_),
    .Y(_12_)
  );
  INVX1 _70_ (
    .A(_12_),
    .Y(_26_)
  );
  NOR2X1 _71_ (
    .A(_05_),
    .B(_25_),
    .Y(_13_)
  );
  INVX1 _72_ (
    .A(_13_),
    .Y(_27_)
  );
  NOR2X1 _73_ (
    .A(_07_),
    .B(_25_),
    .Y(_14_)
  );
  INVX1 _74_ (
    .A(_14_),
    .Y(_28_)
  );
  assign _38_[14:7] = 8'hff;
  assign _39_[14:3] = 12'hfff;
  assign _40_[14:1] = 14'h3fff;
  assign y[7] = a[3];
  assign _02_ = a[2];
  assign _03_ = a[3];
  assign yn[0] = _23_;
  assign yn[1] = _29_;
  assign yn[2] = _30_;
  assign yn[3] = _31_;
  assign yn[4] = _32_;
  assign yn[5] = _33_;
  assign yn[6] = _34_;
  assign yn[7] = _35_;
  assign yn[8] = _36_;
  assign yn[9] = _37_;
  assign yn[10] = _24_;
  assign yn[11] = _25_;
  assign yn[12] = _26_;
  assign yn[13] = _27_;
  assign yn[14] = _28_;
  assign _01_ = a[1];
  assign _00_ = a[0];
  assign y[0] = _09_;
  assign y[1] = _15_;
  assign y[2] = _16_;
  assign y[3] = _17_;
  assign y[4] = _18_;
  assign y[5] = _19_;
  assign y[6] = _20_;
  assign y[8] = _21_;
  assign y[9] = _22_;
  assign y[10] = _10_;
  assign y[11] = _11_;
  assign y[12] = _12_;
  assign y[13] = _13_;
  assign y[14] = _14_;
endmodule




把第二段verilog in,就有了

发表于 2024-7-24 10:25:28 | 显示全部楼层


jzr1989 发表于 2024-7-22 10:35
module dec_thermo_4b (
    input [3:0] a,
    output reg [14:0] yn,


非常感谢!
碰到了另外一个问题,请问assign 语句中的连线,verilog in后生成的电路不识别,怎么办?

发表于 2024-7-24 10:51:58 | 显示全部楼层


jjooee 发表于 2024-7-24 10:25
非常感谢!
碰到了另外一个问题,请问assign 语句中的连线,verilog in后生成的电路不识别,怎么办?


报什么错?
发表于 2024-7-24 13:33:21 | 显示全部楼层



微信图片_20240723170624.png
由于assign,verilog in 后a<3:0>悬空了,电路中没有真实的连线。

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

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 13:09 , Processed in 0.027896 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表