清霜一梦

135实例——add_4

0
阅读(1263)

自我检讨,基础太差了。找了一本135个实例的pdf文档,一个个往后面编吧,希望能巩固一下基础

复制代码

 1 //date : 2013/8/19 2 //designer :pengxiaoen 3 //function  4  5 module add_4 ( 6               ina,inb,cin, 7                   sum,cout 8                   ); 9 input [3:0] ina ,inb ;10 input cin;11 output [3:0] sum;12 output cout;13 14 assign {cout ,sum } = ina + inb + cin;15 16 endmodule 17

复制代码

先不解释,先上图

首先要看的当然是资源使用情况,

其中逻辑门占用了6个,没有使用寄存器。input与output一起占用了14 个pin


先看RTL viewer,很直观,两个5bit 的加法器就搞定了。只是我不明白为什么QuartusII 给的是5bit 的加法器。顶层的东西始终都是加工过的,不是原貌。只有继续追才能找到真相。

 

好,现在就来看Technology Map Viewer.(post mapping)这个才是我们熟悉的数字电路。QuartusII 知道将低位对齐,ain[0] + b[0] + cin=sum[0] + sum[0]进位位。sum[0]进位位 + ain[1] + bin[1] = sum[1] + sum[1]进位位。可是大家发现没有呢。这个cin为什么要一个buffer呢,还发现这个加法器外面有一个1对不对,好,继续往下追

 

我打开的是add0~2 也就是第二个加法器,这个1 很奇怪吧(我个人觉得比较奇怪好吧),是个使能。两个F0,一个F1,这个是干嘛。继续追

 

哈哈这下子没与得躲的了。传说中的F1,画在纸上,经过我的浆糊大脑折腾了好久才发现。哦,出来的是个 ab + bc + ac 。就是当前的进位位。可是右上角不是个两路选择器嘛,这个sum[0] 的逻辑代数式不是 sum = a`b`c + a`bc`+ab`c`+ abc= a 异或b 异或c。。可是经过这个选择器,出来的是个啥啊

 

 

 

 

 

 

 

还有,大家发现没有viewer 选项下面有一个Technology Map Viewer(post fitting)。这个解释不了啊

 

 

求大神解释

问题一:在RTL中为什么是5bit的 的adder呢。后来尝试将总线由原来的4bit扩展到5bit,编译后RTL生成的adder变成了6bit。也就是说编译后默

            认的多生成一个bit,为什么QuartusII 要有这个设定呢

            在handbook 中介绍RTL viewer的那一段里看到这么一句话

            Chains of equivalent combinational gates are merged into a single gate. For example, a 2-input AND gate feeding a 2-input AND gate is converted to a single 3-input AND gate. (待翻译)

 

问题二:在add0~2右上角输出本来应该是sum[0],可是它出来的是个啥啊,怎么分析得不是那么回事啊。

 问题三:Technology Map Viewer(post fitting)这个里面的配置用户怎么看呢。