FPGA中verilog基本用法以及仿真的初学

Verilog 基本用法
在做一个项目时最好把文件夹分类 设计(design),建立工程(prj),仿真(sim),画图分析(doc)
Verilog HDL H:硬件 ,D:设计 ,L:语言 其中文件后缀为.v
形式为 : module
为了实现的功能
endmodule
module后面为文件名(),在括号里面写输入输出
引脚文件后缀.ucf,不同引脚的标号不同,在绑引脚时要准确知道每个引脚所对应的标号,其形式为pn。
芯片自带晶振,所以有其自己的时钟周期,在用到时钟周期时,写法为:always@(posedge sclk)
按位和逻辑
按位于&:每一位之间的于 101&001=001
按位或|:101|001=101
逻辑与&&:真与假的比较 101&&001=真&真=真=1
逻辑或|| 101||001=101&&001=真|真=真=1
Wire与reg区别
输入变量一定是wire,可以默认不定义;
输出的变量可以是wire也可以是reg,根据实际要求决定。如果定量在always initial 中被赋值则一定用reg,如果用assign则用wire。
Modelsim仿真
要重新写一个一个与之相关联.v文件,在开头要定义单位用`timescale 1ns/1ps这样的形式,module写法与模块不同,由于是外部的输入和输出,所以要写在()外。在之后要对输入初始化,用initial,然后自己定义后面的变量的状态的变化达到模拟的过程。延时用#代表
随机正整数的定义为 A={$random}
在后面是实例化, 模块名 模块名_inst();,把模块的输入输出写在括号内,格式如下。括号内对应的是你想与模块相关联的输入输出。其中在实例化文件中的输入,其电流到导向为()内到外,
输出为外到括号内。
基本形式
module tb();
reg tb_clk ;
reg tb_rst_n ;
wire[3:0] tb_ed;
innitial
begin
tb_clk = 0;
tb_rst_n <= 0;
#10 tb_rst_n <=1 ;
end
always #20 tb_ clk <= ~tb_clk;

模块名 模块名_inst(
.clk(tb_clk),
.rst(tb_rst),
.led(tb_led)
);
endmodule

你可能感兴趣的:(FPGA中verilog基本用法以及仿真的初学)