FPGA入门笔记001
1.FPGA入门笔记001
2.# FPGA入门笔记002——译码器3.FPGA入门笔记006——状态机设计实例4.FPGA入门笔记005——阻塞赋值和非阻塞赋值的区别5.FPGA入门笔记004——BCD计数器设计与使用6.FPGA入门笔记003——计数器IP核调用与验证7.FPGA入门笔记013——嵌入式块RAM使用之FIFO8.FPGA入门笔记012——嵌入式块RAM应用之ROM9.FPGA入门笔记011_B——搭建串口收发与存取双口RAM简易应用系统10.FPGA入门笔记011_A——嵌入式块RAM的使用11.FPGA入门笔记010——UART串口接收模块设计12.FPGA入门笔记009——UART串口发送模块设计13.FPGA入门笔记008——数码管动态扫描设计与验证14.FPGA入门笔记007_A——按键消抖模块设计与验证(状态机、$random、仿真模型、task语法)1、assign
赋值语法以关键字assign开头,后面是信号名,可以是单个信号,也可以是不同信号网的连接。
assign为连续赋值语句,通常用于组合逻辑电路,例如:
assign led_out = (key_in == 0)? a : b;
语法结构如下:
assign <net_expression> = [drive_strength] [delay] <expression of different signals or constant value>
使用 assign 语句时, 需要遵循一些规则:
1、左值 应该始终是wire类型的标量或向量网络, 或者标量或矢量网络的串联, 而绝对不能是reg类型的标量或矢量寄存器。
2、右值 可以包含标量或向量寄存器以及函数调用。
3、只要 右值 上的任何操作数的值发生变化, 左值 就会使用新值进行更新。
4、assign 语句也称为连续赋值, 并且始终处于活动状态。
2、timescale
例如:
`timescale 1ns/1ps
定义了一个仿真精度。
'1ns'为仿真步进,例如设置100的延时'#100',则实际延时100*1ns。
'1ps'为仿真精度,设定延时,可以精确到小数点后两位,例如'#100.001'。
'`'为键盘左上角的按键
3、激励信号与检测信号
在testbench中,激励信号定义为reg型,检测信号定义为wire型。
4、initial块
initial块可以理解为一个初始化块。
在initial的起始位置的语句在0时刻即开始执行,之后如果遇到延时,则延时之后执行接下来的语句。
如果initial中有多条语句,则置于begin…end之间。
例如:
initial begin signal_a = 0;signal_b = 0;signal_c = 0; #100; //延时100*1ns signal_a = 0;signal_b = 0;signal_c = 1; #100; signal_a = 0;signal_b = 1;signal_c = 0; #100; signal_a = 0;signal_b = 1;signal_c = 1; #100; signal_a = 1;signal_b = 0;signal_c = 0; #100; signal_a = 1;signal_b = 0;signal_c = 1; #100; signal_a = 1;signal_b = 1;signal_c = 0; #100; signal_a = 1;signal_b = 1;signal_c = 1; #200; $stop; //使用系统函数stop将系统停止下来 end
5、在testbench中例化待测模块
例如:
led_test led_test0( //设置例化名称为led_test0 .a(signal_a), .b(signal_b), .key_in(signal_c), .led_out(led) );
将待测试模块的信号端口与testbench中的端口进行连接
'.'之后紧跟的是待测试模块端口
'()'内的是testbench中的端口
待测试模块定义好后,可以多次在testbench中实例化,例如:
led_test led_test1( //设置例化名称为led_test1 .a(), .b(), .key_in(), .led_out() );
本文作者:Yamada_Ryo
本文链接:https://www.cnblogs.com/little55/p/17834498.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步