注册网站有什么风险吗哪个网站专门做游戏脚本

当前位置: 首页 > news >正文

注册网站有什么风险吗,哪个网站专门做游戏脚本,wordpress 首页插件,wordpress 新建数据表Verilog教程 这个教程写的很好#xff0c;可以多看看。本篇还没整理完。 一、Verilog简介 什么是FPGA#xff1f;一种可通过编程来修改其逻辑功能的数字集成电路#xff08;芯片#xff09; 与单片机的区别#xff1f;对单片机编程并不改变其地电路的内部结构#xff0… Verilog教程 这个教程写的很好可以多看看。本篇还没整理完。 一、Verilog简介 什么是FPGA一种可通过编程来修改其逻辑功能的数字集成电路芯片 与单片机的区别对单片机编程并不改变其地电路的内部结构只是根据要求实现的功能来编写运行的程序指令。举例单片机就两个uart但是我想用4个uart单片机就没办法了。 什么是HDLhardware description language硬件描述语言用于描述数字电路结构和功能的语言。 Verilog和C的区别Verilog是硬件描述语言在编译下载到FPGA之后会生成电路所以Verilog是并行运行的。C语言是软件编程语言编译下载到单片机之后是存储器中的一组指令。而单片机处理软件指令需要取指、译码、执行这个过程是串行执行的。 二、Verilog基础语法 2.1基础知识 2.1.1逻辑值 0低电平GND。 1高电平VCC。 X未知高或低。 Z高阻态外部没有激励信号是一个悬空状态。 2.1.2数字进制格式 二进制b、八进制o、十进制d、十六进制h 2.1.3标识符 用于定义模块名、端口名、信号名。 字母、数字、$符号、_下划线。第一个字符必须是字母或者下划线。 严格区分大小写。 不建议大小写混合使用。 普通内部信号建议全部小写。 2.2数据类型 2.2.1寄存器类型reg 数据存储单元默认初始值是不定值x。未写位宽的时候默认32位。 reg类型数据只能在always和initial中赋值。 如果该过程语句描述的是时序逻辑即always语句带有时钟信号则该寄存器变量对应为触发器。 如果该过程语句描述的是组合逻辑即always语句不带有时钟信号则该寄存器变量对应为硬件连线。 2.2.2线网类型wire、tri 线网类型便是结构实体之间的物理连线。不能存储值它的值由驱动的元件所决定。 驱动线网类型变量的元件有门、连续赋值语句、assign等。 如果没有驱动元件连接到线网类型的变量上则该变量就是高阻态。 2.2.3参数类型parameter 常量类似#define。可以一次定义多个参数参数与参数之间需要用逗号隔开。每个参数定义的右边必须是一个常数表达式。 # 1.参数的传递 模块定义的时候传入参数模块实例化的时候传入参数。 2.时序仿真中的延时 //延时2.5个时间单位后执行sys_clk_i信号的翻转 always #2.5 sys_clk_i sys_clk_i; 2.3运算符 算数运算符、-、*、/、% 关系运算符、、、、、! 逻辑运算符、、|| 条件操作符 位运算符、、|、^ 移位运算符、注意左移位宽要增加、右移位宽不变。 拼接运算符{}。{a,b[3:0]} 2.3.1优先级 2.4编译指令 1.define, undef 2.include 3.timescale 用于定义时延、仿真的单位和精度 timescale time_unit / time_precision time_unit 表示时间单位time_precision 表示时间精度单位 s秒ms毫秒us微妙ns纳秒ps皮秒和 fs飞秒。时间单位≥时间精度。编译过程中timescale会影响后面的模块中的时延值。直到遇到另一个timescale或者resetall。没有默认的timescale没有指定的情况下会继承前面编译模块的timescale参数可能导致设计出错。一个设计多个模块都有timescale时时延单位不受影响但是时延精度会换算成最小时延精度。如果有并行子模块子模块间的 timescale 并不会相互影响。时间精度设置是会影响仿真时间的。时间精度越小仿真时占用内存越多实际使用的仿真时间就越长。所以如果没有必要应尽量将时间精度设置的大一些。如果延时时间的最小位数小于时间精度将会四舍五入。例如时间单位为10ns精度为1ns#1.04表示延时1.04个时间单位1.04x10ns10.4ns但精度无法表示0.1ns#1.04≈10ns 4.default_nettype 5.resetall 6.celldefine, endcelldefine 7.unconnected_drive, nounconnected_drive 三、程序框架 3.1Verilog注释 //、/**/、 3.2Verilog关键字 3.3Verilog程序框架 模块的结构 一个模块由两部分组成一部分描述接口一部分描述逻辑功能。 端口定义、IO说明、内部信号声明、功能定义。 模块的调用 四、高级知识点 4.1结构语句 1. initial 只执行一次。 常用于测试文件的编写用来产生仿真测试信号激励信号或者用于对存储器变量赋初值。

  1. always 一直不断地重复活动。 但是只有和一定的时间控制结合在一起才有作用。 always时间控制可以是沿触发或者电平触发。敏感列表。 沿触发 多个信号中间要用or连接。posedgenegedge 电平触发* 4.2赋值语句 1.阻塞赋值(与C语言一样) b a; 描述组合逻辑时用阻塞赋值。 2.非阻塞赋值并行同时赋值 b a; 只能用于对寄存器类型的变量进行赋值只能用于initial和always中。 描述时序逻辑时用非阻塞赋值。 注意在同一个always块中不要既用非阻塞赋值又要阻塞赋值不允许在多个always块中对同一个变量进行赋值。 组合逻辑 任意时刻输出仅仅取决于该时刻的输入与电路原来的状态无关。 时序逻辑 任意时刻的输出不仅取决于当时的输入信号而且还取决于电路原来的状态。或者说还与之前的输入有关因此时序逻辑必须具备记忆功能。 4.3条件语句 条件语句必须在过程块initial、always中使用。 if-else 0xz按假处理。 if和else后面可以用begin end包含多个语句。 case 位宽必须相等。 casez不用考虑表达式中的高阻值。 casex不用考虑高阻值z和不定值x。 4.4函数 4.5任务 任务的输入输出可以没有或者多个且端口声明可以为 inout 型。不能出现initial和always过程块。但可以包含其他时序控制如延时语句。任务可以调用函数和任务。任务可以作为一条单独的语句出现语句块中。 4.5.1 任务声明 任务在模块中任意位置定义并在模块内任意位置引用作用范围也局限于此模块。 模块内子程序出现下面任意一个条件时则必须使用任务而不能使用函数。 1子程序中包含时序控制逻辑例如延迟事件控制等2没有输入变量3没有输出或输出端的数量大于 1 对 output 信号赋值时也不要用关键字 assign。为避免时序错乱建议 output 信号采用阻塞赋值。 task task_id ;port_declaration ;procedural_statement ; endtask task xor_oper_iner(input [N-1:0]   numa,input [N-1:0]   numb,output [N-1:0]  numco  ) ; #3  numco       numa ^ numb ; endtask 4.5.2 任务调用 task_id(input1, input2, …,outpu1, output2, …); 输入端连接的模块内信号可以是 wire 型也可以是 reg 型。输出端连接的模块内信号要求一定是 reg 型。 4.6状态机 4.6.1状态机概念FSM 在有限个状态之间按一定规律转换的时序电路 4.6.2状态机模型 状态寄存器由一组触发器组成用来记忆状态机当前所处的状态状态的改变只发生在时钟的跳变沿。 4.6.3状态机设计 状态空间定义 状态跳转时序逻辑 下个状态判断组合逻辑 各个状态下的动作