状态机:由激励事件从初态到次态
简易计算机系统,无操作系统
程序->指令->CPU
main函数不是第一条语句,在main之前也有操作
执行环境会调用一个函数来调用main函数,宿主环境hosted下,调用的就是main函数
CPU是个状态机
CPU = 数字逻辑电路 = 组合逻辑电路+时序逻辑电路
激励时间=组合逻辑;状态集合=时许逻辑
指令集 是软件与硬件的接口
是一本手册规范,定义了CPU执行指令的行为
指令集加设计=芯片
程序如何在计算机上运行
编译:将C程序的状态机翻译成为指令集的状态机
CPU结构设计的工作:根据指令集的状态机用电路实现CPU的状态机
verilog硬件描述语言
wire型 表示的是连线,仿真波形不可见
reg型 占用仿真环境的物理内存,会显示在仿真波形中
凡是在always initial 语句中赋值的一定是reg
凡是在assign语句赋值的变量,一定是wire
只能用if else assign always case这四个
assign 是信号的连接 assign a = d a与d连接
always 语句 通常写法是always @ (*) 表示所有的敏感列表,只要信号变换,执行always下面的语句
always @ (posedge clk or negedge rst_n)表示只有在clk上升沿或者rst_n下降沿执行代码 时序逻辑
电路结构描述方法
不同代码对应不同硬件,考虑性能有限还是面积有限;不能有锁存器Latch
因为锁存器在高电平期间将信号完全传输,有毛刺也会传输,如何防止Latch 就是写完if else case default。写触发器的时候, 需要<= 表示时钟延迟一个周期。组合逻辑用 “=”,时序逻辑用“<=",时序逻辑还需要复位。
存储器:定义:reg[datawidth] MemoryName [addresswidth] 例如
reg [7:0] RAM864 [0:63] 定义了一个数据位宽为8bit 地址位宽为64bit
如果要使用存储单元,只能先将存储单元的值赋个寄存器,然后在该寄存器进行位操作