verilog代码转化电路图_门电路实现补码运算

verilog代码转化电路图_门电路实现补码运算comp_conv.v://2022-1-19verilog学习//补码转换逻辑`timescale1ns/10ps;modulecomp_conv( a, a_comp );input[7:0] a;output[7:0] a_comp;//中间变量wire[6:0] b;//负数按位取反的幅度位(1位符号位+7位幅度位)wire[7:0] y;//负数的补码assign ..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在这里插入图片描述


comp_conv.v:


// 2022-1-19 verilog学习
// 补码转换逻辑
`timescale 1ns/10ps;

module comp_conv(
								a,
								a_comp
								);

input[7:0]			a;
output[7:0]			a_comp;

// 中间变量
wire[6:0]				b;  // 负数按位取反的幅度位 (1位符号位+7位幅度位)
wire[7:0]				y;  // 负数的补码

assign					b = ~a[6:0];
assign					y[6:0] = b+1;  // 负数的补码=幅度位按位取反+1
assign					y[7] = a[7];   // 符号位不变

// 二选一
assign					a_comp = a[7]?y:a; //正数(符号位[7]是0)的补码是自己,负数的补码是y 

endmodule


// testbench 测试台
module comp_conv_tb;  
reg[7:0]						a_in;		 // 输入有变化,reg型变量
wire[7:0]						y_out;  // 输出要看,wire型变量

comp_conv comp_conv(
										.a(a_in),
										.a_comp(y_out)
										);  // 测试输入输出即可
										
initial begin
											a_in <= 0;  // a_in初始化
							#3000		$stop;			// 8位bit从00000000到11111111有256个变化,每个变化10ns,3000ns足够
end

always #10 a_in <= a_in+1; 

endmodule

简洁版


// 2022-1-19 verilog学习
// 补码转换逻辑
`timescale 1ns/10ps;

module comp_conv(
								a,
								a_comp
								);

input[7:0]			a;
output[7:0]			a_comp;

// 中间变量
//wire[6:0] b; // 负数按位取反的幅度位 (1位符号位+7位幅度位)
//wire[7:0] y; // 负数的补码

//assign b = ~a[6:0];
//assign y[6:0] = b+1; // 负数的补码=幅度位按位取反+1
//assign y[7] = a[7]; // 符号位不变
//assign y = {a[7],~a[6:0]+1};

// 二选一
//assign a_comp = a[7]?y:a; //正数(符号位[7]是0)的补码是自己,负数的补码是y 
assign						a_comp = a[7]?{ 
   a[7],~a[6:0]+1}:a;  // 二选一

endmodule


// testbench 测试台
module comp_conv_tb;  
reg[7:0]						a_in;		 // 输入有变化,reg型变量
wire[7:0]						y_out;  // 输出要看,wire型变量

comp_conv comp_conv(
										.a(a_in),
										.a_comp(y_out)
										);  // 测试输入输出即可
										
initial begin
											a_in <= 0;  // a_in初始化
							#3000		$stop;			// 8位bit从00000000到11111111有256个变化,每个变化10ns,3000ns足够
end

always #10 a_in <= a_in+1; 

endmodule


modelsim 仿真:

正数补码与原码相同

在这里插入图片描述
负数补码符号位 [7] 不变,幅度 [6:0]取反+1

在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192506.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 洗牌算法_数据库洗牌算法

    js 洗牌算法_数据库洗牌算法概念洗牌算法即是把一组数组里的元素随机组合生成一个新数组。实现constshuffle=([…arr])=>{letm=arr.length;while(m){consti=Math.floor(Math.random()*m–);[arr[m],arr[i]]=[arr[i],arr[m]];}returnarr;};//测试consttes

    2022年9月21日
    0
  • python初级:基础知识-字符串

    python初级:基础知识-字符串

    2021年10月6日
    35
  • Linux下安装tomcat8.5

    Linux下安装tomcat8.5一、在/usr/local路径下新建一个文件夹mkdirtomcat8.51二、下载tomcat8.5压缩包,上传到tomcat8.5目录中三、解压tar-zxvfapache-tomcat-8.5.24.tar.gz1四、Tomcat服务器启动1.启动Tomcat服务器…

    2022年5月29日
    200
  • HorizontalScrollView

    HorizontalScrollView一、概述、水平滚动条可以左右滑动可与ViewPager协同使用二、HorizontalScrollView里边只能放一个子元素可以放一个Layout布局对象来盛放多个元素里边可以设置指示器

    2022年7月1日
    25
  • redhat配置yum源服务器_redhat7网络yum源配置

    redhat配置yum源服务器_redhat7网络yum源配置配置yum源redhat默认自带的yum源需要注册才能更新,可以更换成Centos的yum源.文章目录配置yum源前言一、yum源的工作原理?二、yum配置步骤1.查看系统已经安装的yum2.删除自带的yum包3.下载相关的安装包4.安装包5.下载配置文件6.更新前言Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动

    2022年8月12日
    1
  • 使用eclipse建立ARM开发环境

    使用eclipse建立ARM开发环境原文:http://blog.sina.com.cn/s/blog_78212a050100ph5y.html J-Link: http://www.segger.com/http://www.eclipse.org/downloads/ 下载Eclipse IDE for C/C++ Developers 环境http://sourceforge.net/projects/gnu

    2022年6月6日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号