FPGA学习日记第一天

第一天

逻辑值

0

低电平

1

高电平

z

高阻态,无驱动

x

未知逻辑电平

变量类型

wire    [0:0]    flag;    //瞬态值,映射为物理连线
reg     [7:0]    cnt;     //对某一时间点状态进行保持,映射为寄存器

参数类型

parameter    CNT_MAX = 100;    //可在模块中使用,也可在实例化中修改
localparam   CNT_MAX = 100;    //只能在模块中使用,不能实例化

常量

/*
    格式:[换算为2进制后的位数]['][进制符][该进制下的数值]
    如8'd171为八比特数,值为十进制的171
    d 十进制    h 十六进制    o 八进制    b 二进制
    如果直接写数字,则默认表示32bit十进制数
*/

归约、按位运算符

&

①归约运算符&m

表示对m中所有位数字归约取与,结果为1bit

②按位运算符m&n

表示对m与n按位取与,要求mn位数相等,结果与m相等位数

~&

与非

|

~|

或非

^

异或

~^

同或

算术运算符

+

-

*

乘,一般不用

/

除,一般不用

%

取模,用于测试文件

移位运算符

>>

每位右移,空位补0

<<

每位左移,空位补0

关系运算符

>

大于

<

小于

>=

大于等于

<=

小于等于

位拼接运算符、条件运算符

{ , , }

位拼接运算符将不同数拼成一个

?:

条件运算符用于逻辑判断并赋值

优先级:

归约>算数>移位>关系>“==”、“!=”>按位>“&&”、"||">条件


设计流程:

项目规划——波形绘制——代码编写——代码编译——逻辑仿真——波形对比——绑定管脚——分析综合、布局布线——上板验证

项目工程文件:

工程文件夹

  • doc 文档资料:波形图、项目日志

  • prj 工程文件

  • rtl(design) 能生成硬件电路的可综合代码

  • sim(testbench、tb) 仿真文件

  • 层次化设计:自底而上、自顶而下

latch产生的原因:

  • if无else

  • case列举不全且无default

  • 组合逻辑中输出等于自身

阻塞赋值与非阻塞赋值

=

阻塞赋值,执行时其他语句无法执行

可看作单步:计算并赋值

串行执行

右侧有变化立马发生变化

<=

非阻塞赋值,执行时其他语句可执行

可看作两步:计算、赋值

并行执行

只能用于initial和always块中,不能用于assign

  • 时序逻辑用非阻塞赋值

  • always在组合逻辑中用阻塞赋值,注意敏感列表要用电平触发

  • always中不要同时使用阻塞和非阻塞

  • 用到latch时使用非阻塞

  • 一个always最好只对一个变量进行赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值