一、关于verilog的基础知识

(一)设计:

  1. 数据类型

    1. reg:寄存器类型
    2. wire:线网类型
  2. 数据表示
    1. 向量:reg [7:0] var; 声明一个位宽为8的寄存器向量
    2. 数组:wire [7:0] var[0:3]; 声明一个数组,这个数组里面有4个8bit的线网向量
    3. reg [7-:8] var; 等价于reg [7:0] var;
    4. 索引:通常从高位向低位索引,比如var[3:0],但也可以反过来var[0:3]
    5. 其他还有integer、real、parameter较为常见
  3. 阻塞赋值和非阻塞赋值
    1. 阻塞赋值:var[3:0] = 4'b0000;
    2. 非阻塞赋值:var[7:4] <= 4'b1010;
    3. 阻塞赋值有先后顺序、非阻塞赋值没有
    4. 通常组合逻辑中使用阻塞赋值、时序逻辑中使用非阻塞赋值
  4. always块
    1. always@()begin end
    2. 括号里面的叫敏感量表,当里面任何一个敏感量发生变化的时候,就会执行一遍块内的表达式
    3. 敏感量有时钟的,就是时序逻辑;
    4. 对于组合逻辑,为了避免综合出锁存器,需要将所有右值放进敏感量表或者写成always@(*)
  5. 模块例化规则
    1. 顺序连接:不建议使用
    2. 命名连接:module_name inst_name#(parameter_list)(.portname1(port1),.portname2(port2))
    3. 生成器例化:generate,同时例化多个模块
    4. 注意⚠️:输入端口只能连接reg类型,输出端口只能连wire类型。
  6. 有限状态机
    1. moore机
    2. mealy机
    3. 一般用case语句实现
  7. 避免竞争冒险
    1. 避免多端驱动
    2. 组合逻辑块写成always@(*)
    3. if-else、case-default写完整
  8. 流水线设计
    1. 以空间换时间

(二)测试

  1. initial块

    1. initial begin end
    2. 只出现在testbench里面,内部表达式只执行一次
  2. wait(event):等待事件触发,程序会在此中断,其他模块的也不会执行

  3. @(event):等待时间触发,块在此停止,但不影响其他模块的表达式执行

  4. repeat(n):重复执行n次

  5. event:声明一个事件;->eventName语句表明事件被触发

  6. $stop:停止执行

  7. $finish:终止执行

  8. $display:相当于c语言中的一次printf

  9. $monitor:监控某个信号,发生变化则printf一次

  10. $random:产生随机数

  11. $time:返回当前仿真时刻

  12. 信号探针:可以通过instName.signalName访问变量值

二、一些简单的电路

(一)组合逻辑电路

  1. 复用器
  2. 半加器
  3. 全加器
  4. 行波进位加法器
  5. 先行进位加法器
  6. 减法器
  7. 比较器
  8. 移位器
  9. 循环移位器

(二)时序逻辑电路

  1. 计数器
  2. 移位寄存器
  3. 循环移位寄存器
  4. 分频器
  5. 同步fifo
  6. 异步fifo(跨时钟域)

三、关于时序约束和功耗约束

  1. DTA和STA

    1. DTA:动态时序分析,写激励文件仿真,耗时长、达到完备性需要大量测试向量
    2. STA:静态时序分析,生成有向无环图,耗时短、可能存在错误路径、且只适用于同步电路
  2. 同步复位和异步复位

    1. 复位信号必须持续到时钟触发
    2. 异步复位属于即刻复位
    3. 一般的做法是异步复位同步释放
  3. setupTime和holdTime

    1. setupTime:建立时间
    2. $setup(posedge sys_clk, sig_a, 5):系统钟和信号a的建立时间约束在5个单位以内,否则报错
    3. holdTime:保持时间
    4. $hold(posedge sys_clk, sig_a, 5):
    5. $setuphold(posedge sys_clk, sig_b, 5, 3):系统钟和信号b的建立时间约束在5个单位以内,并且建立时间约束在3个单位以内,否则报错
  4. skew

    1. 时钟边缘倾斜
  5. 时序违背的解决办法:

    1. 降低时钟频率
    2. 缩短关键路径
    3. 升级工艺或编程器件
  6. 关键路径处理:

    1. 约束布局布线
    2. 插入buffer
    3. 改进并行算法
    4. 调整元件尺寸
    5. pipeline
  7. 数字电路的功耗

    1. 动态耗散
    2. 漏电流
    3. 短路电流
  8. 低功耗设计

    1. DVS:根据历史工作情况动态调整工作电压

    2. DVFS:根据当前工作频率,动态调整工作电压

    3. 门控时钟

    4. GALS:全局异步本地同步技术

    5. pipeline

    6. 采用特殊编码方式,减少信号比特翻转(同时还能减少glitch)

    7. 插入缓冲器,以减少活跃电路电容

    8. power gating:切断模块供电

    9. Adaptive Body Bias:动态调整晶体管阈值电压,减少漏电流

【数电】数电基础知识相关推荐

  1. 计算机专业技能测试为什么考美术,河北工艺美术职业学院2019年单独招生考试职业适应性测试(计算机基础知识和实践技能)考试大纲...

    2021年高职单招升学一对一咨询高职单招林老师:18623075867(微信) 2019年河北省高职单招考试十类 和对口电子电工类.计算机类联考 职业适应性测试(计算机基础知识和实践技能) 考试大纲 ...

  2. 搞电子必学知识,模电原来这么简单之数电模电那点事

    对于数电模电这两门功课,在大学课堂中有的学校先数后模有的先模后数,当然也有的同时开设.其实爱好电子技术的小伙伴们,我给大家的建议是先学习模电再学习数电,所以我更文也是先来更新模电再更新数电的.这是有其 ...

  3. 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识

    原标题:实战 | 电商业务的性能测试(一): 必备基础知识 1. 测试步骤及模型分析 1.1 测试步骤总览 需求分析与测试设计(性能需求目标+业务模型拆解) 测试数据准备和构造(基于模型的数据准备) ...

  4. Proteus与模电数电学习第一弹

    因为并不是电子信息相关专业的学生,只是学过电工电子课,当时上课的时候没有意识到老师居然拿半个学期的时间讲完了整个模电数电的知识点. 因此上学期学过51和stm32之后就一直对单片机相关的原理一知半解, ...

  5. 模电——半导体基础知识

    半导体基础知识 物质按照其导电能力可以分为导体.半导体和绝缘体三种类型,导电能力介于导体和绝缘体之间的物质叫做半导体. 本征半导体: 高度提纯.结构完整的半导体单晶体叫做本征半导体.常用的半导体材料是 ...

  6. 软件测试/测试开发 | 电商业务的性能测试(一): 必备基础知识

    公众号搜索:TestingStudio 霍格沃兹测试开发的干货都很硬核 1. 测试步骤及模型分析 1.1 测试步骤总览 需求分析与测试设计(性能需求目标+业务模型拆解) 测试数据准备和构造(基于模型的 ...

  7. 模电数电自动控制原理实验台QY-MS301C

    一.设备特点 QY-MS301C模电.数电.自动控制原理实验台是为配合各类院校<自动控制理论>课程而设计的电子模拟设备,以积分器和加法器为基础,配置了二极管.电位器.分压器.电阻.电容等部 ...

  8. 模电数电之你有我也有

    一天,数电和模电吵起来了. 数电:我比你更能抗干扰. 模电:我比你的精度高. 数电:我可以实现各种算法. 模电:我可以实现无线通讯. 数电:没有我,电子行业还得倒退几十年呢. 模电:没有我,你还只能生 ...

  9. 电工模电数电电拖单片机PLC传感器实训台QY-DG790G

    一.产品特点 QY-DG790G电工模电数电电拖单片机PLC传感器实训台采用挂箱式与网孔板式结构,易扩展新的实训项目.实训屏上装有电压型漏电保护装置和电流型漏电保护装置,控制屏内一有漏电现象,即发出告 ...

  10. C语言已经自学完了,数电模电电路都还没学,学stm32会有阻碍吗

    C语言已经自学完了,数电模电电路都还没学,学stm32会有阻碍吗 起初就是学个c语言,跟着郭天祥视频进修,一通开发.大一的电路知识仅限于欧姆定律,电容滤波,二极管正向导通这样吧.但也搞得红红火火地,感 ...

最新文章

  1. json取值_Mysql 中json数据存储读取
  2. pdf转换成可在线浏览的电子杂志zmaker_pdf
  3. uml和模式应用 pdf_「企业架构」架构知识库应用简介
  4. linux下q和q 的区别,linux命令中q、wq、q!的区别
  5. python查询斐波那契数列通项公式_斐波那契数列求解总结(Python版)
  6. 95-090-022-源码-bin脚本-CLI提交Job的时候加载插件
  7. UI实用素材|APP动效设计
  8. Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记
  9. Bailian2687 数组逆序重放【逆序处理】
  10. 记录一次客户Oracle启动不了的解决过程
  11. python分段线性插值_Python实现分段线性插值
  12. 谈薪资被 HR 怼了:估计你一辈子就是个程序员!气不过啊。。。
  13. 运维Python大全
  14. 专访李运华:程序员如何在技术上提升自己
  15. uniapp开发APP使用echart
  16. Python正则表达式在线练习(网页版)和离线练习(本地版)
  17. MVB总线在地铁列车控制系统中的应用
  18. iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享
  19. 鸿蒙处理器要比骁龙好吗,三星Exynos1080和骁龙865Plus哪个好_处理器对比
  20. Aegisub无法打开视频

热门文章

  1. html编写在线打字通,HTML5代码打字练习、HTML5案例 - 02
  2. 编译jemalloc以及报错解决
  3. 【Android】mina框架使用详情
  4. Cain嗅探工具的DNS欺骗
  5. 三菱PLC传送类指令应用
  6. 新手入门:盘点Web测试与APP测试的异同点
  7. VS2013官方下载地址
  8. css字体加粗_CSS字体
  9. 无法阻止的电竞热潮-用电竞连接世界
  10. 滑动窗口协议如何实现流量控制