软件与硬件设计的区别和联系

来源:互联网 发布:黄药师医药软件 编辑:程序博客网 时间:2024/05/16 10:35

软件设计指的是编程,硬件设计也是编程,但两者是有区别的。

软件编写的程序最终转化为机器语言,并在硬件上执行。

硬件编写的程序最终转化为电路,以实体的形式被制造出来。

也就是说,软件设计的是0/1的二进制码,硬件设计的是实际的电路。

 

但既然硬件设计也是通过编程实现的,那么,软件工程遵循的原则也应该适用于硬件设计。

比如:需求分析/编程规范/版本控制等等。

 

在具体的编程上,由于衡量准则/操作颗粒度不同,对编程的要求也不同。

软件的衡量准则是时间复杂度和空间复杂度,硬件的衡量准则是工作频率,面积,功耗。

软件操作的最小单位绝大多数是字节,硬件操作的最小单位是比特。

这些不同是造成软件设计和硬件设计区别的最大原因。

 

例:计算数的二进制表示中1的个数,如,5的二进制表示是101,1的个数为2,7的二进制

表示是111,1的个数是3。

软件的解决方法是:

num=0;

while(n!=0) {

    n = n & (n-1);

    num++;

}

 

硬件的解决方法是:

assign num[6:0] = n[0]+n[1]+n[2]+...+n[31];