公司做网站建设价格,网站内链接怎么做,汉滨区住房和城乡建设局网站,高端企业门户网站建设服务公司硬件画板说白了就是电气的连接#xff0c;相较于PCB连接在2.5D中完成#xff08;有些大佬们是直接3D设计#xff09;考虑的东西会更多#xff0c;原理图的抽象使得硬件思路更加简单。
就算是这样#xff0c; 增加到上千门器件后的大工程是非常难以进行的编辑和检查的相较于PCB连接在2.5D中完成有些大佬们是直接3D设计考虑的东西会更多原理图的抽象使得硬件思路更加简单。
就算是这样 增加到上千门器件后的大工程是非常难以进行的编辑和检查的 而如今的逻辑门等芯片电路规模都快上千亿级别了这个规模已经不是人的两只眼睛或者一个团队能够用原理图来表示出来的。
于是 硬件语言verilog 和VHDL 就出现了是相对于传统原理图这可以完成上万门元件的电路设计了 上亿门元件的布局一个团队能够完成上百亿千亿的功能一个精英团队可以触及但是任然是非常困难跨过这个极限带来的门坎。 module counter10(//端口定义input rstn, //复位端低有效input clk, //输入时钟output [3:0] cnt, //计数输出output cout); //溢出位reg [3:0] cnt_temp ; //计数器寄存器always(posedge clk or negedge rstn) beginif(! rstn)begin //复位时计时归0cnt_temp 4b0 ;endelse if (cnt_temp4d9) begin //计时10个cycle时计时归0cnt_temp 4b000;endelse begin //计时加1cnt_temp cnt_temp 1b1 ; endendassign cout (cnt_temp4d9) ; //输出周期位assign cnt cnt_temp ; //输出实时计时器
endmodule于是工程师们引进了类似Java的 Chisel 语言引入对象多态等思路对硬件逻辑描述更加友善 一个团队基本可以轻松胜任上百亿门的元件的功能描述。
class SortBlock extends Component() {override val io new Bundle() {val in1 new IoSortBlockOut()val in2 new IoSortBlockOut()val out new IoSortBlockOut()}
...
}个人人为 既然都涉及到高级语言了 为啥不搞到python。 我们知道cjava这些虽然脱离了底层硬件描述的重复工作但是还是没有完全脱离内存和数据的绑定。
而python目前在内存处理这块更加友善 所以我打算尝试以下一门新的硬件语言的设计而不是像MyHDL这样需要语言去描述硬件不能带来逻辑上的极致。
MyHDL 程序风格
from myhdl import *block
def dff(q, d, clk):always(clk.posedge)def logic():q.next dreturn logic比如上边的模块 我可以优化到下面更加简洁描述
# rstn 复位端低有效
# clk 输入时钟
def counter10(rstn, clk):cnt_temp reg(3) #计数器寄存器with posedge(clk) or negedge(rstn): # alwaysif not rstn: #复位时计时归0cnt_temp 0elif cnt_temp9: #计时10个cycle时计时归0cnt_temp 0else: #计时加1cnt_temp cnt_temp 1cout (cnt_temp 9) #输出周期位cnt cnt_temp #输出实时计时器return cnt, cout # 计数输出 溢出位这里说明以下 大家都很优秀文章中的任何说明都是大家的成果 我只是在大家的思路上前人的经验上 提出一点思路供大家探讨。 参考
吃透Chisel语言.01.大家Verilog和VHDL用得好好的为什么要整个Chisel语言出来