自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (7)
  • 收藏
  • 关注

原创 ITE EC(IT81202)--- SMFI模块手册翻译

6.4 SMFI Shared Memory Flash Interface Bridge 6.4.1概述 Bridge提供主机访问共享内存。它还提供映射到主机域地址空间的EC代码地址空间,以及用于读/写保护的锁定机制。6.4.2 特征1)充当LPC/FWH存储设备(HLPC)2)支持主机域和EC域之间的内存映射3)支持读/写(编程/擦除)Flash操作和保护机制4)支持两个共享内存访问路径:主机和EC5)支持256KB/512KB的e-flash...

2021-10-14 16:18:37 2175

原创 ITE EC(IT81202)--- PMC模块手册翻译

PMCPower Management Channel6.7.1概述电源管理通道在ACPI规范中定义,用作主机处理器和嵌入式控制器之间的通信通道。6.7.2功能支持五个PM通道支持通道1的兼容模式支持所有通道的增强模式支持共享和专用接口支持命令/状态和数据端口支持IRQ/smi#/SCI#生成6.7.3功能说明生成对主机的SCI#和SMI#中断6.7.3.1一般说明PM通道支持两种操作模式。一种称为兼容模式,仅适用于通道1。另一种称为增强模式。PMC适

2021-09-07 20:03:20 2156 1

原创 STM32定时器-定时器与外部触发的同步以及(两个)定时器同步

定时器与外部触发的同步1.复位模式:计数器使用内部时钟计数,然后正常运转,直到出现TI1上升沿,当TI1出现上升沿时,计数器清零然后重新从零开始计数。TI1上升沿与实际计数器复位之间的延迟是由于TI1输入的重新同步电路引起的。2.门控模式:低电平计数,高电平不计数3.触发模式:原本不计数,检测TI2上升沿,计数器启动。(默认为内部CLK)4.外部时钟模式2 + 触发模式:用ETR作为时钟信号。定时器同步1.一个定时器作为另一个定时器的预分频器。2.一个定时器使能另一个定时器。

2021-01-19 16:25:15 5014

原创 STM32定时器-6步PWM输出

六步PWM输出 STM32的只有两个高级定时器TIM1与TIM8才能互补输出。这里我们说的六步PWM输出要用到互补输出,所以只有TIM1与TIM8才能实现。什么是六步PWM输出?下面就来解释下。当一个定时器需要互补输出的时候,可以预先设置输出比较模式位OCxM(如TIM_OCMode_Timing,TIM_OCMode_PWM1等)、通道的使能位CCxE、互补通道的使能位CCxNE,然后当发生COM换相事件时,就可在中断函数中将刚预先设置位设置好,这样的话,就决定了下一步的配置了。这里之所...

2021-01-15 11:22:45 2975

转载 STM32定时器单脉冲输出模式

本文整于https://www.sohu.com/a/292903672_807475 原文作者:茶话MCUSTM32定时器单脉冲输出模式单脉冲输出模式是定时器比较输出应用中的一种特殊情况或者特殊应用,是一种特殊的PWM输出模式。1.比较输出【Compare Output】功能: 定时器通过对预设的比较值与计数器的值做匹配比较之后,依据比较结果结合相应的输出模式从而实现各类输出。如PWM输出、电平翻转、单脉冲输出、强制输出等。一般来讲,STM32的通用定时期和高级定时器都具...

2021-01-14 19:32:07 12380 3

原创 芯片低功耗设计

芯片低功耗设计电路的功耗分为静态功耗和动态功耗。静态功耗:微亚米级工艺之前可以忽略静态功耗,当工艺的特征尺寸达到0.06μm时,静态功耗将超过系统的动态功耗,通过对不工作的三极管关闭供给电压消除静态功耗,但会对电路的性能产生不好的影响。动态功耗:该功耗时电路工作时消耗的功率,分为翻转功耗和内部功耗。翻转功耗:一个驱动元件在对负载电容进行充放电时消耗的功率。内部功耗:电路发生翻转时会出现瞬时的同时导通的情况,这时会消耗一定的功率,称为短路功耗,翻转速度越慢,功耗越明显。动态功耗公式可表示为:通

2020-12-19 11:08:32 2845 1

原创 IIC-eeprom(24xx64)

IIC1.iic是两线式串行总线,两根线分别式SCL和SDA(inout),属于半双工同步通信方式。2.FPGA中inout类型要通过三态门进行设置3.iic性质1)准备状态下SDA、SCL都为12)START :在SCL为1的状态下,SDA由1变成03)在SCL为低时改变数据(8bit为1组)4)应答位(acknowledge):SDA保持高阻状态接收应答位。5)STOP:在SCL为1的状态下,SDA由0变成1EEPROM1.eeprom封装图从图中可以

2020-10-01 01:30:08 782 1

原创 FLASH(M25P16)-READ指令时序代码及仿真波形(内含M25P16仿真模型文件)

READ本文代码实现读取仿真模型文件初始化文本中第一个地址的数据,可以看到仿真模型中初始化文件是initM25P16.txt,将其一个地址数据改为12READ时序图READ指令代码module flash_read ( input wire clk, input wire rst_n, output reg flash_cs_n, output reg flash_scl, output reg flash_d, input wire

2020-09-27 20:28:51 858

原创 FLASH(M25P16)-页编程(PP)指令时序代码及仿真波形(内含M25P16仿真模型文件)

PP指令pp是页编程指令,需要先打开写使能,后面给24位地址,然后接数据,时序图如下图所示。PP指令时序代码//页编程(PP)指令:打开写使能,给24位地址,后面接数据module flash_pp ( input wire clk, input wire rst_n, output reg flash_cs_n, output reg flash_scl, output reg flash_d, input wire flash_q, out

2020-09-27 15:18:12 880

原创 FLASH(M25P16)-RDID时序代码及仿真波形(内含M25P16仿真模型文件)

RDIDRDID时序代码module flash_rdid ( input wire clk, input wire rst_n, output reg flash_scl, output reg flash_d, output reg flash_cs_n, input wire flash_q, output reg q ); localparam RDID = 8'h9f; localparam T_h

2020-09-27 11:15:42 1725

原创 FPGA--FLASH(M25P16芯片)

FLASH(串行 用spi的00或者11模式)16Mbit = 2M X 8bit 其中2M分为32个扇区,每个扇区有256页,每页有256byteaddr[20:0] = A20-A0例如21'h123456处于第18扇区52页86个地址M25P16芯片1.信号名称2.封装(8/16引脚)3.信号功能描述serial data output (Q):输出serial data input (D):输入serial clock(C):串行时钟线,上升沿...

2020-09-26 15:29:26 4864

原创 SV---随机控制

1.随机序列1)产生事务序列的另一个方法是使用SV的randsequence结构。这对于随机安排组织原子(atomic)测试序列很有帮助。initial begin for (int i=0;i<15;i++) begin randsequence (steam) steam : cfg_read := 1 | io_read := 2 | mem_read := 5; cfg_read : {cfg_read_task;} | {cfg_read_task;

2020-07-20 20:32:06 1002

原创 SV---数组约束

1.数组的属性约束1)在约束随机标量的同时,我们还可以对随机化数组进行约束。class dyn_size; rand logic [31:0] d[]; constraint d_size {d_size() inside {[1:10]};}//约束动态数组d的size在1-10.即每个数组有1-10个数endclass2)多数情况下,数组的大小应该给定范围,防止生成体积过大的数组或者空数组。3)还可以在约束中结合数组的其他方法,如:求和sum(),求积product(),与and

2020-07-20 00:57:13 5942

原创 SV---随机函数

1.pre_randomize()和post_randomize()函数1)有时需要在调用randomize()之前或之后立即执行一些操作,例如在随机前设置类里的一些非随机变量,(上下限、条件值、权重),或者在随机化之后需要计算随机数据的误差、分析和记录随机数据等。2)SV提供了两个预定义的void类型函数pre_randomize()和post_randomize()函数。用户可以在类中定义这两个函数,分别在其中定义随机化前的行为和随机化后的行为。3)如果某个类中定义了pre_randomiz

2020-07-19 20:13:56 9149

原创 SV---约束块控制

1.打开或关闭约束1)p.constraint_mode(0)是关闭约束2)p.constraint_mode(1)是打开约束class Packet; rand int length; constraint c_short {length inside {[1:32]};} constraint c_long {length inside {[1000:1023]};}endclassPacket P;initial begin p = new(); //创建一个long p

2020-07-18 20:26:13 3880 1

原创 SV---随机约束和分布

为什么需要随机1.芯片越来越复杂,定向测试已经无法满足验证的需求,而随机测试的比例逐渐提高。2.定向测试能找到你认为可能存在的缺陷,而随机测试可以找到连你自己都想不到的缺陷。为什么需要约束没有约束,产生有效激励的同时也产生了很多无效和非法的激励。1.声明随机变量的类关键字:rand/randc,只能出现在class中,用来修饰成员变量。rand:每次随机的概率都是一样的,假设随机10次,每次都是1/10。randc:每做一次随机,总数会减1,假设随机10次,第一次随机..

2020-07-17 17:42:54 4540

原创 SV---包的使用

1.包的意义2.包的定义package regs_pkg; `include "stimulator.sv" `include "monitor.sv" `inclide "chker.sv" `include "env.sv"endpackagepackage arb_pkg; `include "stimulator.sv" `include "monitor.sv" `inclide "chker.sv" `include "env.sv"endpackage

2020-07-17 10:38:11 1753 2

原创 SV---句柄的使用

1.句柄的传递1)句柄可以作为形式参数通过方法来完成对象句柄的传递,从外部传入方法内部。2)句柄也可以在方法内部首先完成修改,而后再由外部完成使用例题:下述代码最后显示的t.addr的数值是多少?function void create (Transaction tr); tr = new(); tr.addr = 100; ...endfunctionTransaction t;initial begin create(t); t.addr = 10; $dis

2020-07-16 21:26:51 3652

原创 SV---类的继承

1.继承性关键词:extends例题class cat; protected cloor_t color; local bit is_good; function set_good(bit s); this.is_good = s; endfunctionendclassclass black_cat extends cat; function new(); this.color = BLACK; endfunctionendclassclass white_

2020-07-16 17:07:51 7897 1

原创 SV---类的成员

1.概述1)如果没有指明访问类型,那么成员的默认类型是public,子类和外部据可以访问成员。2)如果指明是protected,那么只有该类或者子类可以访问成员,而外部无法访问。3)如果指明是local,那么只有该类可以访问成,子类和外部均无法访问。例题代码中ck.get_clock和ck.nclock数值分别是多少?class clock local bit is_summer = 0; local int nclock = 6; function int get_cl

2020-07-16 14:44:59 1460

原创 SV---类和对象

1.OOP的概念要素1)Class(类):包含变量和方法的基本模块,是“软件”盒子。2)Ojbect(对象):类的实例,,在SV中可以使用class来例化,是“软件”例化。3)Handle(句柄):用来指向对象的指针,来索引对象的变量和方法。4)Property(属性):在类中声明的存储数据的变量,和Verilog中的wire和reg一样。5)Method(方法):类中可以使用task或者function来定义方法以便处理自身或者外部传入的数据。2.第一个事务类(Transactio

2020-07-15 17:35:38 2648 1

原创 SV---设置断点和查看变量

1.断点设置方法:在object中双击变量打开代码,在代码前面单机设置断点上述在第八行和十四行设置断点,在这两处result数值分别是多少?答:第一个initial中调用两次incr_static(静态),第一次执行incr_static,result为0,因为加1还没进行,由于是静态所以第二次执行incr_static,result为1. 第二个initial中调用两次incr_dynamic(动态),第一次执行incr_dynamic,result为0,同样因为加1还没进行,由于是.

2020-07-15 14:53:14 1001 1

原创 SV---仿真的结束

1.结束方式1) $finish 2) $stop3)program隐式结束program pgm1; initial begin : proc1 #100ns; $display("@%0t p1.proc1 finished",$time); end initial begin : proc2 #400ns; $display("@%0t p1.proc2 finished",$time); endendprogramprogram ...

2020-07-15 11:56:17 2527

原创 SV---采样和数据驱动

1.竞争问题如何避免采样的竞争问题:1)在驱动时,添加相应的人为延迟 2)在采样事件前某段时刻中进行采样`timescale 1ns/1psmodule race1; bit clk1,clk2; bit rstn; logic [7:0] d1;initial begin forever #5 clk <= !clk;end always @ (clk1) ...

2020-07-14 17:40:48 2618

原创 SV---接口

接口(interface)1.接口可以用作设计,也可以用作验证2.与module的使用性质很像,可以定义端口,也可以定义双向信号;可以使用initial和always,也可以定义function和task。3.TB和DUT是相互独立的,通过interface连接。4.在interface的端口列表中只需要定义时钟、复位等公共信号,或者不定义任何端口信号。module调用interfaceinterface arb_if(input bit clk); logic [1:0]

2020-07-14 12:13:34 1188 4

原创 SV变量生命周期

1.在SV中,我们将数据的生命周期分为动态(automatic)和静态(static)2.局部变量是动态生命周期,其生命周期同所在域共存亡,例如function/task中的临时变量,调用结束后,临时变量的生命也将终结。3.全局变量是静态生命周期,从程序执行开始到结束一直存在,例如module中的变量默认都是全局变量。4如果数据变量被声明为automatic,那么在进入该进程/方法后,automatic变量会被创建,离开后会被销毁。 而static变量从仿真开始时就被创建,在进程/方法执行.

2020-06-30 22:39:03 1434

原创 SV-任务(task)

task: 1)task无法通过return返回结果,因此只能通过output、inout或者ref的参数来返回。 2)task内可以置入耗时语句,而function不能,常见的耗时语句有:@event、wait event、#delay等。task mytask1 (output logic [31:0] x, input logic y); ...endtastps: 1)在非耗时方法定义时使用function, 2)在内置耗时语句时使...

2020-06-30 22:06:08 4967

原创 SV-函数(function)

function:1)可以在参数列表中指定输入参数(input)、输出参数(output)、输入输出参数(inout)、引用参数(ref)。2)可以返回数值或者不返回数值(void)function int double (input a); return 2*a;endfunctioninitial begin $display ("double of %0d is %0d",10,double(10));end3)function默认数据类型为logic,例如:i

2020-06-30 18:06:18 7852

原创 SV过程块(always、initial)

module,interface认为是硬件;program,class认为是软件过程块:1)always(可综合) 2)initial(不可综合)always:可用于module和interface中always @ (posedge clk)----时序逻辑 " <= "always @ ( * )----组合逻辑 " = "eg:上文提到了always具备描述硬件电路行为和核心要素,你认为下列选项哪些是正确使用always的方式?...

2020-06-30 17:35:06 4786

原创 SV数据类型-结构体、枚举类型、字符串

结构体1.Verilog的最大缺陷之一是没有数据结构,在SV中可以使用struct语句创建结构,跟c语言类似。2.不过struct的功能少,它只是一个数据的集合,其通常的使用方式是将若干相关的变量组合到一个struct结构定义中。3.伴随typedef可以用来创建新的类型,并利用新类型来声明更多变量。//为了共享该类型,通过typedef来创建新类型typedef struct {bit [7:0] r,g,b;} pixel_s;pixel_s my_pixel; //声明变量my

2020-06-29 16:10:44 3490 2

原创 SV数据类型-关联数组

关联数组:用于保存稀疏矩阵的元素。当你对一个非常大的地址空间寻址时,该数组只为实际写入的元素分配空间,这种实现方法所需的空间比定宽或动态数组所占用的空间要小得多。其他语言也有类似的数据存储结构,如哈希(hash)和python中的词典(dictionary),可以灵活赋予键值(key)和数值(value)。bit [63:0] assoc[int],idx = 1;repeat (64) begin //对稀疏分布的元素进行初始化 assoc[idx] = idx; //

2020-06-29 15:00:34 7032 3

原创 SV数据类型-队列

1.队列结合了链表和数组的优点,可以在它的任何地方添加或删除元素,并且通过索引实现对任一元素的访问。2.队列的声明是使用带有美元符号的下标:[$],队列元素的标号从0到$。3.队列不需要new[ ]去创建空间,只需要使用队列的方法为其增减元素,一开始其空间为0。4队列的一个简单使用:通过其自带方法push_back( )和pop_front( )的结合来实现FIFO的用法。(从back往里放,从front往外拿)eg:int j = 1, q2[$] = {3,4},q[$] =..

2020-06-29 10:15:31 14021 2

原创 SD_CLK部分

module sd_clk ( input wire hclk, input wire hrst_n, input wire [7:0] in_clk_divider, input wire in_sd_clk_enable, input wire hw_stop_clk, output wire out_sd_clk_dft, output wire ...

2020-06-07 23:55:23 872 1

原创 AHB_Slave(SD_INTERFACE)部分代码 未完待续

AHB_SLAVE(SD_IF)部分代码如下:module sd_if (//-- ahb input hclk; input hrst_n; input hsl; input hwrite;//1->write 0->read input [1:0] htrans; //4种 idel busy seq nons...

2020-06-06 21:21:30 1904

原创 基于AHB总线的SD HOST控制器模块功能描述

SD-HOST模块功能简述1.SD_IF(interface)模块:ahb_slave接口模块,内含控制寄存器,供CPU访问,决定HOST的工作模式;AHB总线接口功能模块,用于CPU通过驱动软件对SD HOST控制器进行访问。◆功能: (1)AHB slave接口,允许CPU访问,控制sd_host的运行方式; (2)同步逻辑,SD域产生的信号同步到AHB域,供软件...

2020-06-04 22:02:24 2916 7

原创 Ubuntu16.04安装VCS和Verdi遇到的两个问题

问题一:在输入lmg_vcs后,提示lmgrd命令找不到,全网90%的答案都很统一,说缺少LSB库文件。但我安装lsb-core后仍然找不到lmged命令,几经周折在一个评论下找到大佬回复。解决方法:即在lmged前面加上其路径,路径查找方法如下图。路径为 /home/用户名/+搜索到的路径问题二:输入dve后显示Server node is down or not respondingREstart the vendor daemon on...

2020-05-26 02:09:22 5906 7

原创 FPGA——PS/2驱动

概述PS/2驱动框架分为四个部分:1.预处理部分,用来同步ps/2_clk和ps/2_sda,从而进行边沿检测。2.接收部分,当flag来了,接收sda的数据。3.译码部分,根据ps/2数据手册对接收的数据进行转译。4.显示部分,将转译过来的内容显示在数码管上。(因为我只做了数字0-9的显示,所以4位的data就足够了)框架如下图所示:预处理部分首先对ps/...

2019-10-28 09:58:55 556

原创 FPGA——DAC驱动

时序图上图为LDAC控制的时序图,根据时序图我们把输出定为:output reg dac_clk,output reg dac_sda,output reg dac_load,output reg dac_ldac把A1 A0 RNG D7~D0 作为输入,令其为cmd[10:0]...

2019-10-25 18:55:50 2808

IT81202.pdf

ITE EC芯片手册 IT81202

2021-10-14

EC的功能介绍.ppt

EC的功能介绍.ppt

2021-10-09

笔记本EC介绍.pptx

笔记本EC介绍.pptx

2021-10-09

flash_read.zip

通过线性序列机对flash(m25p16)的READ指令时序代码进行编写和仿真,内含m25p16仿真模型文件,在sim文件夹flash_sim_lib中

2020-09-27

FLASH页编程(page program)时序verilog代码及仿真工程文件

通过线性序列机对flash(m25p16)的PP指令时序代码进行编写和仿真,内含m25p16仿真模型文件,在sim文件夹flash_sim_lib中

2020-09-27

flash_rdid时序及仿真工程文件

flash的读电子签名(rdid)完整工程文件,编译环境quartus13.0,仿真软件altera-modelsim。内含m25p16仿真模型文件,在sim文件夹的flash_sim_lib中

2020-09-27

M25Pxx_Verilog_Sim_model.rar

m25p16的verilog仿真模型文件,亲测可用,里面包换仿真所需的所有文件,本人亲自仿真了RDID的时序,可以生成202015电子签名

2020-09-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除