作者yenci (der Wille zur Macht)
看板Electronics
标题Re: 请问ALU单元的verilog写法
时间Sun Mar 18 10:40:46 2007
※ 引述《deathcustom (DSM......)》之铭言:
: 标题: Re: 请问ALU单元的verilog写法
: 时间: Sat Mar 10 09:19:42 2007
:
: ※ 引述《teyurd (......)》之铭言:
: : 请问假如要写一个ALU电路, 采用以下写法(verilog)
: : ++++++
: : + +
: : A1 --->+ + ---> B
: : A2 --->+ +
: : ++++++
: : | |
: : | |
: : C
: : 因为ALU是组合电路,所以采用一个很大的always来写 ,
: : 其中 A 是input , B是 output
: : C是选择要输出到output的运算结果
: : 因为运算有很多种,例如加减乘,shift,and,xor,or...等等
: : 所以必需要assign 很多运算result来表示这些运算结果
: : 如:
: : assign mul_result=A1*A2
: : assign xor_result=A1^A2
: : .
: : .
: : .
: : always@(A1 or A2 or C)
: : begin
: : case C
: : .
: : .
: : .
: : .
: : endcase
: : end
: : 因为运算好像还蛮多的 , 所以可能会合成一个很大的MUX
: : 假设每条运算结果是32 bit, 而运算种类有20种
: : 那内部可能会有一个input至少是20*32条线以上的mux
: : 请问这种写法在layout上会有问题吗? 例如lvs上的问题?
:
: 理论上是不会有这种问题
:
: 你要面对的问题是面积跟时间的考量
:
: 如果你要时间快,那每一种运算都要单独写
:
: 如果要面积小的话
:
: 有些运算可以robust
:
: --
: 所谓理论上是因为现在的数位电路都直接用HDL写
:
: 所以根本没那个问题,design compiler能做出来就没问题
:
: 如果你写完之後要自己LAYOUT的话~~~那我就不知道了XDDD
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 220.135.83.97
这样写法的hw description, 经过例如hdl compiler (GTECH translate) 通常是摆上mux, (我不确定,我也不这样写)
logic mapping及optimization并不会改变这样的基本架构
所以我认为最好的方法就是
more detail design specification
data-path进一步分析和化简
因为许多arithmetics/logic op.s 彼此有data-path dependency关系
别只写个case(c) 并期望synthesiser 有多聪明
至於layout? 应该是没什麽问题吧, 我不清楚
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.141.233.117
※ 编辑: yenci 来自: 220.141.233.117 (03/18 10:45)