Verilog学习笔记简单功能实现(二)...............全加器
先以一位全加器为例:Xi、Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号。列表有:
Xi | Yi | Cin | Sum | Cout |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
由左边表格可知:
Sum=X’Y'Cin+X'YCin'+XY'Cin'+XYCin=X'(Y⊕Cin)+X(Y⊙Cin)=X'(Y⊕Cin)+X(Y⊕Cin)'=X⊕Y⊕Cin
Cout=X’YCin+XYCin'+XY'Cin+XYCin=XY+(X⊕Y)Cin
如果取:P=X⊕Y ; G=XY
那么:Sum=P⊕Cin Cout=PCin+G
图中对Cout的公式进行了,即Cout'=(AB)'(PCin)'=(AB)'((A⊕B)Cin)'
下面是全加器的门级Verilog语言描述:
module Fadd(x,y,Cin,Cout,Sum);
input x,y,Cin;
output Cout,Sum;
wire a,b,c; xor xor1(a,x,y);
xor2(Sum,a,Cin);
and and1(b,x,y);
and2(c,Cin,a);
or or1(Cout,b,c); endmodule
全加器的行为描述:
module add(x,y,Cin,Sum,Cout);
input x,y,Cin;
output Sum,Cin;
assign Sum=x^y^Cin;
assign Cout=x&y+(x^y)&Cin;
endmodule
module add_N(x,y,Cin,Cout,Sum);
input x,y,Cin;
output Sum,Cout;
assign {Cout,Sum}=x+y+Cin;
endmodule
利用行为级描述的Verilog全加器可以很简单的扩展成4位或者16位等全加器:
module add_4(x,y,Cin,Cout,Sum);
input [:]x,y;
input Cin;
output [:]Sum;
output Cout;
assign {Cout,Sum}=x+y+Cin;
endmodule
module add_N(x,y,Cin,Cout,Sum);
input [N-:]x,y;
input Cin;
output [N-:]Sum;
output Cout;
assign {Cout,Sum}=x+y+Cin;
endmodule
Verilog学习笔记简单功能实现(二)...............全加器的更多相关文章
- Verilog学习笔记简单功能实现(八)...............同步FIFO
Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上 ...
- Verilog学习笔记简单功能实现(六)...............计数分频电路
在分频器电路中最重要的概念有两个:1)奇分频/偶分频:2)占空比. A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为 module half_clk(clr,clk_in,clk ...
- Verilog学习笔记简单功能实现(五)...............序列检测设计
这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output ...
- Verilog学习笔记简单功能实现(三)...............同步有限状态机
在Verilog中可以采用多种方法来描述有限状态机最常见的方法就是用always和case语句.如下图所示的状态转移图就表示了一个简单的有限状态机: 图中:图表示了一个四状态的状态机,输入为A和Res ...
- Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)
利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...
- Verilog学习笔记简单功能实现(四)...............译码器和编码器
这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); :]a; :]out; 'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋 ...
- Verilog学习笔记简单功能实现(一)...............D触发器
module D_flop(data,clk,clr,q,qb); input data,clk,clr; output q,qb; wire a,b,c,d,e,f,ndata,nclk; nand ...
- Verilog学习笔记简单功能实现(八)...............异步FIFO
基本原理: 1.读写指针的工作原理 写指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0). 读指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0). ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...
随机推荐
- android内部培训视频_第二节 布局基础
第二节:布局入门 一.线性布局 需要掌握的属性: 1.orientation:排列方式 vertical:垂直 Horizontal:水平 2.weight:水平布局的权重 3.gravity:子控件 ...
- Ubuntu上安装Robomongo及添加到启动器
到目前为止,Robomongo仍是MongoDB最好的客户端管理工具,如需在Ubuntu上安装Robomongo,可直接从官网下载.tar.gz压缩包进行解压,然后直接运行bin目录下的robomon ...
- Java 网络爬虫获取页面源代码
原博文:http://www.cnblogs.com/xudong-bupt/archive/2013/03/20/2971893.html 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网 ...
- 今天不谈技术,说说一些常用的软件~By 逆天
前端工具:http://www.cnblogs.com/dunitian/p/5640147.html 在线办公: http://word.baidu.com/welcome.html http ...
- 【Win 10应用开发】SplitView控件
SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所表示的为主要视图,而Pane属性设置的视图则可以隐藏,可以折叠和展开. 估计文字是不太容易介绍这个控件 ...
- Unity 文件读取
存储: 在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包 ...
- PS批处理的使用
一. 前言 做开发的时候,最多的时候就是图片的使用了.有时候图片的处理都按照同样的步骤,比如说统一将图片的大小调整为固定大小,或者统一在所有的图片的的某个位置上加入文字或者小图片等等,这时候PS的批处 ...
- 用scikit-learn和pandas学习线性回归
对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了. 1. 获取数据,定义问题 没有数据,当然没法研究机器学习 ...
- C# 如何将List拆分成多个子集合
网上的例子: 问:List<string> list = new List<string>(); for (int i = 1; i < 95; i++) ...
- iOS开发之使用XMPPFramework实现即时通信(三)
你看今天是(三)对吧,前面肯定有(一)和(二),在发表完iOS开发之使用XMPPFramework实现即时通信(一)和iOS开发之使用XMPPFramework实现即时通信(二)后有好多的小伙伴加我Q ...