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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3329|回复: 6

[求助] Veriloga8位十进制转换二进制

[复制链接]
发表于 2022-6-2 14:34:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
求助各位大神,最近在仿真adc和dac,需要用到D2B,但是这个激励源不会编写,本人学的模拟的,未接触过Verilog,麻烦能不能指点一下,8bit十进制转换二进制,谢谢啦
发表于 2022-6-3 17:19:43 | 显示全部楼层




  1.       function [7:0] dec2bin;
  2.          input [7:0] dec;
  3.          begin
  4.             dec2bin = 8'h0a*dec[7:4]+dec[3:0];
  5.          end
  6.       endfunction // dec2bin



复制代码
 楼主| 发表于 2022-6-6 10:50:58 | 显示全部楼层


谢谢大佬,我描述错了,是VerilogA代码,function是Verilog代码,module和endmodule开头结尾的
 楼主| 发表于 2022-8-31 14:44:32 | 显示全部楼层


你好,请问哪里错了,百思不得其解
2022-08-31 143632.jpeg
发表于 2022-12-12 16:08:10 | 显示全部楼层


penghe666 发表于 2022-8-31 14:44
你好,请问哪里错了,百思不得其解


问题有解决吗
发表于 2022-12-12 16:18:05 | 显示全部楼层
Cadence website
search
Verilog A: analogevent needed to create a decimal to binary block
// VerilogA for simple transient compatible eightbit_ad,
// sml 8/10/2020

`include "constants.vams"
`include "disciplines.vams"
module eightbit_ad(VOUT, VDD, VIN, VSS);
output [7:0] VOUT;
electrical [7:0] VOUT;
input VDD;
electrical VDD;
input VIN;
electrical VIN;
input VSS;
electrical VSS;
integer vin_integer;
parameter real rise_fall_time = 50e-12;
integer vout[7:0];
analog begin

vin_integer = V(VIN,VSS);
if (vin_integer%256<128) V(VOUT[7],VSS)<+V(VSS);
else V(VOUT[7],VSS)<+V(VDD,VSS);
V(VOUT[7],VSS)<+transition(V(VDD)*vout[7],rise_fall_time,rise_fall_time);
if (vin_integer%128<64) V(VOUT[6],VSS)<+V(VSS);
else V(VOUT[6],VSS)<+V(VDD,VSS);
V(VOUT[6],VSS)<+transition(V(VDD)*vout[6],rise_fall_time,rise_fall_time);
if (vin_integer%64<32) V(VOUT[5],VSS)<+V(VSS);
else V(VOUT[5],VSS)<+V(VDD,VSS);
V(VOUT[5],VSS)<+transition(V(VDD)*vout[5],rise_fall_time,rise_fall_time);
if (vin_integer%32<16) V(VOUT[4],VSS)<+V(VSS);
else V(VOUT[4],VSS)<+V(VDD,VSS);
V(VOUT[4],VSS)<+ transition(V(VDD)*vout[4],rise_fall_time,rise_fall_time);

if (vin_integer%16<8) V(VOUT[3],VSS)<+V(VSS);
else V(VOUT[3],VSS)<+V(VDD,VSS);
V(VOUT[3],VSS)<+ transition(V(VDD)*vout[3],rise_fall_time,rise_fall_time);
if (vin_integer%8<4) V(VOUT[2],VSS)<+V(VSS);
else V(VOUT[2],VSS)<+V(VDD,VSS);
V(VOUT[2],VSS)<+transition(V(VDD)*vout[2],rise_fall_time,rise_fall_time);
if (vin_integer%4<2) vout[1]=0;
else vout[1]=1;
V(VOUT[1],VSS)<+transition(V(VDD)*vout[1],rise_fall_time,rise_fall_time);
if (vin_integer%2<1) vout[0]=0;
else vout[0]=1;
V(VOUT[0],VSS)<+transition(V(VDD)*vout[0],rise_fall_time,rise_fall_time);

end

endmodule

 楼主| 发表于 2022-12-13 16:07:33 | 显示全部楼层


andy2000a 发表于 2022-12-12 16:18
Cadence website  search
Verilog A: analogevent needed to create a decimal to binary block // Ver ...


谢谢!好人一生平安。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 16:35 , Processed in 0.018901 second(s), 7 queries , Gzip On, Redis On.

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