verilog之原语设计

1、原语作用

在一般的verilog设计中,一般采用数字逻辑设计,由软件将数字逻辑转化为特定的数字电路。但是,对于某些特殊的领域,有可能需要用户直接自定义数字电路以达到对指定电路的设计。原语就是执行这个功能的。原语也就是门级语言。这个语言之于verilog就像汇编语言之于C语言一样,是门级网表所采用的语法。了解这个语言的语法,可以提高对编译器工作的认识。如果具有足够的经验,甚至可以直接修改门级网表来实现设计的实现。对于一个大型的工程而言,这无疑会节约大量的时间。

2、基本语法

简单的与或非门:

and a1(out1,in1,in2); //简单的与门a1,先输出,再输入
not n1(out1,in1); //简单的非门
or or1(out1,in1,in2); //简单或门
xor xor1(out1,in1,in2);//简单异或门
nand nand1(out1,in1,in2);//与非门
nor nor(out1,in1,in2);//与或门
xnor xnor1(out1,in1,in2);//简单同或门
buf b1(out1,out2,in); //二输出缓存门,除了z会被当作x输出,其他输出和输入一样
bufif1 bf1(outw,inw,controlw);//三态门,控制位为0,输出为z,控制位为1,输出等于输入,一般不将控制位置于高阻;fi1就是控制位为1输出。
//同理可以推出bufif0是control为0时输出有效。其他的三态门如notif0和notif1就是在buf三态上加上not逻辑,即输出为输入的非。

阵列输入的与或非门:

nand #2 nand_array[3:0] (out,in1,in2);//这里的out,in1,in2都是和[3:0]的位宽对齐的。就相当于声明了一排与门。可以理解为总线与非门
bufif0 ar[3:0] (out,in,en);//注意,这里的控制端口en是一个位宽,也就是声明由一个控制口控制的阵列三态门。
//还有一些复杂的阵列操作,如合并,添加等,这里就不多说明。

在FPGA常用的门级组合逻辑语言就这几个。还有一些基于器件的描述和传输门的描述以后有时间再看,现在先接触简单逻辑。

延时控制:

#(95:100:105) clk=1;//这个#的延时是95到105之间,经典值为100,用于表示时钟的偏斜
and #(10) a1(out,in1,in2);//输入输出总延时
and #(10,12) a2(out,in1,in2);//上升延时和下降延时,区分了上升和下降的区别
bufif1 #(10,12,11) a3(out,in1,en);//上升延时,下降延时和关断延时,关断延时,就是en作用的时间

这里也是几个简单的延时模型,还有许多其他的语法,这里就不多介绍。

3、简单总结

想要掌握原语设计还是比较困难的,但是阅读应该是必要的。通过阅读自己写的verilog代码所对应的原语,可以快速理解自己代码所对应的电路。通过对数字电路的理解,可以提高设计的认识,进而理解verilog的设计方法。而且,对于学习过数字电路设计的人来说,将简单的数字电路转化为原语也是一个不错的挑战。

verilog之原语设计的更多相关文章

  1. Verilog学习笔记设计和验证篇(五)...............层次化事件队列

    详细的了解层次化事件队列有助于理解Verilog的阻塞赋值和非阻塞赋值功能.所谓层次化事件队列指的是用于调度仿真时间的不同Verilog事件队列.在IEEE的5.3节中定义了层次化事件队列在逻辑上分为 ...

  2. Verilog学习笔记设计和验证篇(三)...............同步有限状态机的指导原则

    因为大多数的FPGA内部的触发器数目相当多,又加上独热码状态机(one hot code machine)的译码逻辑最为简单,所以在FPGA实现状态机时,往往采用独热码状态机(即每个状态只有一个寄存器 ...

  3. ACE框架 同步原语设计

    ACE框架常用的同步机制设计成统一的原语接口.同步原语使用系统平台(操作系统,多线程库)提供的同步原语,并为系统平台不提供的同步原语提供模拟实现.ACE框架使用了外观模式和适配器分两层,将同步原语统一 ...

  4. verilog分频模块设计

    verilog设计: 分频器的设计: 分频器就是将一个时钟源的频率降低的过程(可以通过观察分频之后周期中包含几个原时钟周期来看是几分频),分频分为基数分频也分为偶数分频, 偶数分频的代码如下:(其中就 ...

  5. 8421BCD转余3码Verilog HDL的设计(1)

    近期阅读Verilog HDL高级数字设计(第二版)中,遇到了串行比特流BCD码转余3码转换器的设计,比较独特的是: (1)该转换器的输入为1位串行比特流,输出也为1位串行比特流. BCD码与余三码的 ...

  6. Verilog学习笔记设计和验证篇(一)...............总线和流水线

    总线 总线是运算部件之间数据流通的公共通道.在硬线逻辑构成的运算电路中只要电路的规模允许可以比较自由的确定总线的位宽,从而大大的提高数据流通的速度.各个运算部件和数据寄存器组可以通过带有控制端的三态门 ...

  7. Verilog学习笔记设计和验证篇(二)...............同步有限状态机

    上图表示的就是数字电路设计中常用的时钟同步状态机的结构.其中共有四个部分产生下一状态的组合逻辑F.状态寄存器组.输出组合逻辑G.流水线输出寄存器组.如果状态寄存器组由n个寄存器组成,就可以记忆2^n个 ...

  8. Verilog分频器的设计

    大三都要结束了,才发现自己太多东西没深入学习. 对于偶分频:(计数到分频数的一半就翻转) 注: 图中只用了一个计数器,当然也可以用多个: 图中只计数到需要分频的一半,当然也可计数到更多: 图中从第一个 ...

  9. 基于verilog的分频器设计(半整数分频,小数分频:下)

    第二种方法:对进行奇数倍n分频时钟,首先进行n/2分频(带小数,即等于(n-1)/2+0.5),然后再进行二分频得到.得到占空比为50%的奇数倍分频.下面讲讲进行小数分频的设计方法. 小数分频:首先讲 ...

  10. 基于verilog的分频器设计(奇偶分频原理及其电路实现:上)

    在一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对FPGA的系统时钟(频率太高)进行分频.分频器主要分为奇数分频,偶数分频,半整数分频和小数分频,在对时钟要求不是很严格的FPGA系统中 ...

随机推荐

  1. 【Unity3D】IK动画

    1 IK简介 ​ 2D动画.人体模型及动画.人物跟随鼠标位置中介绍了 Aniamtion.Animator.人体模型.人体骨骼.人体动画等基础知识及人体动画的应用,本文将进一步介绍 IK 动画. ​ ...

  2. FTP命令详解(含操作实例)

    以下是微软命令行FTP客户端命令大全,如果你想使用"未加工(RAW)"FTP命令而非下面翻译过的请参考:http://www.nsftools.com/tips/RawFTP.ht ...

  3. IDA 常用快捷键记录

    常用快捷键1 1.切换文本视图与图表视图 空格键 2.返回上一个操作地址 ESC 3.搜索地址和符号 G 4.对符号进行重命名 N 5.常规注释 冒号键 6.可重复注释 分号键 7.添加标签 Alt+ ...

  4. 2019年在浏览器用原生js写WebGL,绘制图形;

    因为JavaScript高级程序设计(第三版)中的运行书上15.3WebGL部分的代码时在chrome和firefox浏览器下报错,在后面我网上初步找了一圈,好像没人做出真正可以用的代码;所以我就自己 ...

  5. 网络通信部分之bs/cs架构,网络概念,osi七层网络模型,TCP/UDP协议---day27

    1.网络开发的两大架构c/s,b/s # ### 1.网络开发的两大架构 a文件 -> b文件 借助c文件 a文件和b文件进行数据交流,借助c文件中转数据 a文件把数据放在c文件中,b文件从c文 ...

  6. 【Azure API 管理】APIM中证书更新问题

    问题描述 每一年到期更新域名证书,APIM会中断服务,请问如何不中断服务? 问题解答 Azure API 管理允许在受信任的根证书和中间证书存储中的计算机上安装 CA 证书,分配证书的过程可能需要 1 ...

  7. clickhouse 安装启动报<Error> Application: DB::Exception: There is no profile 'default' in configuration file. 以及常见的错误的总结

    1.启动时报错<Error> Application: DB::Exception: There is no profile 'default' in configuration file ...

  8. mysql-对应删除 dict 脚本

    -- 1. 此 dict 是在不同租户下的数据字典,查询时需要根据 departid 进行分类查询 -- 2. 删除dict, dict分类主表类型与挂载的子表数据 -- 3. 通过查询到的主表的 g ...

  9. adb monkey 有哪些参数?

    adb monkey 是 Android Debug Bridge (ADB) 工具中的一个命令,用于执行随机事件来对 Android 应用进行压力测试.以下是 adb monkey 命令的一些常用参 ...

  10. sentinel 持久化

    1. 概述 在前面的关于Sentinel的使用中,可以发现,Sentinel-dashboard配置的规则,在我们的微服务以及控制台重启的时候就清空了,因为他是基于内存的. 所以我们有必要将规则配置进 ...