FPGA概论
Soc:System on chip 片上系统
Sob:System on board 板上系统
Zynq=Arm+FPGA
特点:开发周期短、高性能、高灵活性
verilog
Module muxtwo(out,a,b,sl);
Input a,b,sl;
Output out;
Not u1(nsl,sl);
And #1 u2(sela,a,nsl);
And #1 u3(selb,b,sl);
Or #1 u4(out,sela,selb);
模块的端口定义:
input [信号位宽-1 : 0 ] 端口名1 ;
output [ width-1 : 0 ] name 2;
inout [width-1 :0 ] name 3; //输入输出口
内部信号:
reg [width-1 : 0 ] R1, R2 ;
wire [ width-1 : 0 ] W1,W2;
声明语句:
assign a = b & c ;
and #2 u1 (q a b ) ; // q=a&b 该与门名称为u1
always@ ( posedge clk or posedge clr );
begin
if( clr ) q<=0 ;
else if ( en )q <= d ;
end
// ???
verilog中所有块都是并行的
4个最基本的数据类型:reg wire integer parameter
8'b10101000 //位宽为8的二进制数
'前的位宽都指的是二进制数的位宽
寄存器类型和线网类型都可以映射到实际的电路中去
reg类型默认的初始值为不定值x
reg没给定位宽时,默认位宽为1
reg类型数据只能在always和initial语句中被赋值
参数其实是一个常量,用parameter定义
每个参数定义的右边必须是一个常数表达式
用于定义状态机的状态、数据位宽、延迟大小等
运算符:+ - * / %
条件操作符:
a?b:c //如果a为真,选择b,否则选择c
位运算符:
~ & | ^
取反、与、或、异或
将a与b的低四位拼接起来: