打印

大家讨论一下这个RTL的code综合成门电路后会是什么样子

[复制链接]
3690|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
viatuzi|  楼主 | 2011-2-15 12:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 viatuzi 于 2011-2-15 12:42 编辑

wire [31:0]  B ;
wire CLK, reset;
reg out;
always @(posedge CLK or negedge reset) begin
    if(~reset)
            begin
                  out <=  1'b0;
            end
    else
           begin
                  out <=  ( A & ~(B == 7’b1101101) );
           end
en

相关帖子

沙发
atua| | 2011-2-15 15:39 | 只看该作者
这有什么可讨论的?自己综合完了看看不就知道了

使用特权

评论回复
板凳
viatuzi|  楼主 | 2011-2-15 16:17 | 只看该作者
这个很能验证大家对数字电路的基础知识的掌握程度。
很多人在说怎么怎么学习FPGA中,学什么语言,用什么器件……
却把最重要的东西给忽略了。

比较清楚综合的问题,才有可能写出比较好的代码,才有可能有意识的避免一些容易出问题的写代码的方式。
要想清楚综合的问题呢,一个要对数字电路的基础知识有比较深入的掌握,另外一个就是需要对综合工具有一定的了解。

使用特权

评论回复
地板
viatuzi|  楼主 | 2011-2-15 16:22 | 只看该作者
这个问题实际上是我最近两天做ECO的时候遇到的一个问题的简化版本。
需要修一个bug,但RTL早已经freeze了,只能通过ECO来做。
做ECO的时候就更是要对RTL以及综合出来的代码有足够的清楚才能行。

使用特权

评论回复
5
sxhhhjicbb| | 2011-2-19 23:00 | 只看该作者
异步D触发器吧.

使用特权

评论回复
6
viatuzi|  楼主 | 2011-2-19 23:15 | 只看该作者
触发器是肯定的。关键的问题是触发器的D端输入会是什么样子的逻辑。

使用特权

评论回复
7
viatuzi|  楼主 | 2011-2-19 23:35 | 只看该作者
在综合的时候,两个信号的与可以直接用一个二输入与门来实现。不过如果输入A和B,输出是(~A)&(~B)的话,用与门实现,则需要两个非门加上一个二输入与门,这个时候更好的选择是一个二输入的或非门。

使用特权

评论回复
8
viatuzi|  楼主 | 2011-2-19 23:39 | 只看该作者
在判断一个变量与一个常量是否相等的问题上,比如上面的B == 7’b1101101:
如果比较双方位宽不同的话,则首先要调整某一方的位宽,使二者位宽相同。这里需要将7‘b1101101调整为32’b1101101。
然后才会去做判断是否相等的逻辑。

使用特权

评论回复
9
viatuzi|  楼主 | 2011-2-19 23:44 | 只看该作者
如果要判断两个变量是不是相等,则需要用到比较器。对于两个32bits的变量来讲,比较器的规模还是比较可观的。
但如果是一个变量和一个常量的比较,则通常采用变量各bit根据常量对应bit的值保持不变(常量对应bit为1)或者取反(常量对应bit为0)并按位与的方式,得到结果,这样就大大简化了电路的结构。

使用特权

评论回复
10
dream_realize| | 2011-2-23 23:06 | 只看该作者
B段就会用后面的7位 跟 7‘bxxxxx 进行and or 门电路后与A端再与。 当然这个是理想情况。

dc 会做优化的,反正,前面是一堆and or nor 电路!

使用特权

评论回复
11
viatuzi|  楼主 | 2011-2-24 17:04 | 只看该作者
同样的rtl code,不同工具综合出来,基本上大同小异吧。
之所以提出这个问题,是想说在学习的时候,要多关注一下基础的东西,多关注一下技术的细节,这才是学习的根本。
至于学习什么语言,用什么工具,那些都是浮云。真正对电路本身有深刻认识的人,去熟悉一个语言,一种工具,相对来讲,是非常容易的事情。

使用特权

评论回复
12
wxfxwk1986| | 2011-4-15 13:18 | 只看该作者
如果要判断两个变量是不是相等,则需要用到比较器。对于两个32bits的变量来讲,比较器的规模还是比较可观的。
但如果是一个变量和一个常量的比较,则通常采用变量各bit根据常量对应bit的值保持不变(常量对应bit为1 ...
viatuzi 发表于 2011-2-19 23:44

偶然看到你的这个帖子,感觉很好,老师上课时也总强调你说表述的观点,即重视基础。针对你说的这句话,我是这样理解的:即每位异或,然后再相与,不知这样对不对?那如果是这样的话,你说的简化了电路结构体现在哪呢?谢谢你的回答。

使用特权

评论回复
13
viatuzi|  楼主 | 2011-4-16 16:11 | 只看该作者
偶然看到你的这个帖子,感觉很好,老师上课时也总强调你说表述的观点,即重视基础。针对你说的这句话,我是这样理解的:即每位异或,然后再相与,不知这样对不对?那如果是这样的话,你说的简化了电路结构体现在哪 ...
wxfxwk1986 发表于 2011-4-15 13:18

两个变量之间的比较采用异或再相与的结构;
一个变量与一个常量比较,则是这个变量各bit根据常量的值或取反或保持不变,然后bit之间取与的结果;
两者相比,当然是后者的电路结构要简单很多了。

使用特权

评论回复
14
rosedao| | 2013-2-21 16:36 | 只看该作者
viatuzi 发表于 2011-2-19 23:44
如果要判断两个变量是不是相等,则需要用到比较器。对于两个32bits的变量来讲,比较器的规模还是比较可观的 ...

的确,用这样的比较方法电路简化了很多·,但实际设计中,对于一个大的设计需要讲究这样的每一个细节吗?那样不会太浪费时间了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

374

帖子

7

粉丝