fpga 语法

本文详细介绍了FPGA设计中initial和always语句的使用,initial通常用于产生仿真测试信号和初始化存储器变量,而always语句则不断重复活动,常用于描述时序逻辑和组合逻辑。文中还探讨了阻塞与非阻塞赋值的区别,并强调了在同一个always块中应避免混合使用,以及避免在多个块中对同一变量赋值。此外,文章提到了case语句的使用规范,包括casez和casex的选择情况。
摘要由CSDN通过智能技术生成

结构语句
initial和always
initial语句它在模块中只执行一次。
它常用于测试文件的编写,用来产生仿真测试信号(激励信号),
或者用于对存储器变量赋初值。
always语句一直在不断地重复活动。
但是只有和一定的时间控制结合在一起才有作用。

//给输入信号初始值
initial begin
sys clk <=1'b0 ;
sys rst n <=1 'b0 ;
touch key <=1'b0;
    #20 sys_rstn<=1'b1;
    #10touch_key<=1'b1; // 此处的#10是基于上一个语句的延时,下面也是一样的道理
    #30touch_ key <= 1' b0;
    #110 touch_ key <=1 'b1 ;
    #30 touch key< = 1' b0 ;
end
/ /产生50Mhz的时钟,周期为20ns
always #10    sys clk <= ~sys clk ;

沿触发的always块常常描述时序逻辑行为。
电平触发的always块常常描述组合逻辑行为。
@(* )表示对后面语句块中所有输入变量的变化都是敏感的。


所谓阻塞的概念是指,在同一个a lways
块中,后面的赋值语句是在前一句赋值
语句结束后才开始赋值的。

所谓非阻塞的概念是指,在计算非阻塞赋值
的RHS以及更新LHS期间,允许其他的非阻塞
赋值语句同时计算RHS和更新LHS。

非阻塞赋值只能用于对寄存器类型的

FPGA时钟约束语法是一种用于定义FPGA设计中时钟信号规格的语法规则。通过使用时钟约束语法,设计人员可以明确指定时钟信号的频率、时钟间距、时钟上升边沿和下降边沿的时序要求等。以下是关于FPGA时钟约束语法的一些要点: 1. 时钟约束语法的基本结构:时钟约束通常以约束语句的形式存在于设计的约束文件中,一般使用关键字"create_clock"或"define_clock"开头。语法通常包括时钟信号名称、时钟频率和时钟时序等信息。 2. 时钟频率约束:时钟频率是指时钟信号的周期性重复率,它可以通过时钟约束语法中的"period"参数来指定。常用的单位有纳秒或兆赫。 3. 时钟时序约束:时钟时序是指时钟信号的上升边沿和下降边沿的时序约束。例如,可以使用时钟约束语法中的"rising_edge"和"falling_edge"关键字来指定时钟上升边沿和下降边沿的要求,如最小保持时间(minium hold time)和最大建立时间(maximum setup time)。 4. 时钟约束层次结构:FPGA设计中,可能存在多个时钟域和时钟层次结构。为了准确描述FPGA设计的时钟关系,时钟约束语法通常支持层次结构的描述,包括主时钟域和从时钟域。 5. 时钟约束检查工具:FPGA设计过程中,可以使用专门的时钟约束检查工具来验证时钟约束是否满足要求。这些工具可以通过分析FPGA设计和时钟约束文件的信息,自动检查时钟频率、时钟时序等是否满足约束要求。 FPGA时钟约束语法的正确使用可以确保设计的稳定性和性能。设计人员应该熟悉并遵守相关的时钟约束规则,以提高FPGA设计的可靠性和可维护性。同时,时钟约束语法也能够帮助设计人员更好地理解和管理FPGA设计中复杂的时钟关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值