花了近两三个星期,从夏宇闻的书中一行行敲下代码,然后再在questasim仿真器下进行修改、编译和仿真。出现了很多错误,一一改正,学到了不少东西,由于记性太烂,过后即忘,逼着自己写下自己从中学到的知识点,以及一些自己的心得。
EEPROM行为模型:
1. 首先用verilog编写出eeprom的行为模型,因为我们在这里主要是设计读写控制器,eeprom只是仿真时需要的,所以只需要编写出其行为模型。我们可以用延时控制语句,事件控制语句。
2. EEPROM有一个输入端口scl,和一个双向端口sda。
3. EEPROM中的寄存器有地址寄存器(address),控制字节寄存器(ctrl_byte),数据字节寄存器(data_byte),以及状态寄存器,还有一个outflag寄存器,控制sda的双向端口特性。
4. 由于其不必综合,我们首先将其中的所有寄存器、存储单元都初始化。
EEPROM的读写时序是这样的:
Ø scl作为串行的时钟信号在时钟为高电平时,如果检测到sda的上升沿,开始启动。
Ø 之后sda在低电平时给其赋值,在scl高电平到来时其已经稳定,并且在scl高电平期间保持不变。所以可在@posedgescl时将sda的值赋给eeprom中的地址或者数据寄存器。
Ø 写EEPROM用到shift_in这个任务,这个任务有输出shift,需要注意的是只有当任务全部执行完,输出才会传递到参