首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

fpga学习日记7,Verilog数据与赋值

fpga学习日记7,Verilog数据与赋值

基本学习计划
初识verilog
Verilog数据和赋值
Verilog预处理
Verilog建模以及实例
Verilog仿真以及实例
Verilog状态机
UDP
综合不可综合
其他高级功能
Verilog设计技巧
(初学者 如有错误请多批评)
-----------------------------------------------------------------------------------
这次主要关注verilog与c语言的数据类型和赋值的不同之处
来学verilog的设计思想和基本数据类型以及赋值方法
其实有很多新奇的地方 比如向量和数组(memory以及拼接(合并) inital和always等需要学习的地方

数据类型如何选择?
数组和向量(总线)的认识。
拼接功能{}

阻塞和非阻塞有何区别?
Init块和always块有何区别?
为什么fpga程序执行分并行和顺序执行?
延时。

设计思想
自顶向下,分层次,模块化设计












Verilog HDL 是区分大小写的,即大小写不同的标识符是不同的。
另外Verilog HDL的书写格式是自由的,即一条语句可多行书写;一行可写多个语句。
白空(新行、制表符、空格)没有特殊意义。
如input A;input B;与
input A;
input B;
是一样的。
书写规范建议:
一个语句一行。
采用空四格的table 键进行缩进。



端口类型分为
Input:输入端口
Output:输出端口
inot双向端口

(模块的所有端口都必须进行输入输出的声明)





- 寄存器类型: reg 是具有存储能力的信号
     在always 块中被赋值的信号,往往代表触发器,但不一定是触发器。
reg 是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如D型触发器、ROM
等。存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。但必
须注意的是,reg 类型的变量,不一定是存储单元,如在always 语句中进行描述的必须用reg 类型
的变量。
reg 类型定义语法如下:
reg [msb: lsb] reg1, reg2, . . . r e g N;
msb 和lsb 定义了范围,并且均为常数值表达式。范围定义是可选的;如果没有定义范围,缺
省值为1 位寄存器。例如:
reg [3:0] Sat;  // S a t 为4 位寄存器。
reg Cnt; //1 位寄存器。
reg [1:32] Kisp, Pisp, Lisp ;


   - 线网类型: wire信号需要前端驱动  自身没有存储能力
     用 assign 关键词指定的组合逻辑的信号或连线
线网类型主要有wire 和tri 两种。线网类型用于对结构化器件之间的物理连线的建模。如器件的管脚,内部器件如与门的输出等。以上面的加法器为例,输入信号A,B是由外部器件所驱动,
异或门X1的输出S1是与异或门X2输入脚相连的物理连接线,它由异或门X1所驱动。
由于线网类型代表的是物理连接线,因此它不存贮逻辑值。必须由器件所驱动。通常由assign
进行赋值。如assign A = B ^ C;
当一个wire 类型的信号没有被驱动时,缺省值为Z(高阻)。
信号没有定义数据类型时,缺省为wire 类型。
wire [4:1] Box, Drt;
wire [5:1] Cfg;
wire [6:1] Peg;
wire [8:1] Adt;

, b);              //  -----2



      always @ (posedge clk or posedge clr)   //-----3









返回列表