非阻塞赋值与阻塞赋值
根据非阻塞赋值的特点(非阻塞赋值等待当前时间槽执行结束更新左边表达式的值),其赋值运算符左侧操作数只能为寄存器(reg)类型,因此非阻塞赋值只能用于过程性语句中(initial和always),不允许在连续赋值语句中使用非阻塞赋值。
位宽
verilog的不同进制数进行赋值时,位宽皆为二进制位宽,例如:10’d1000,为十进制数1000
问题
Error deleting “msim_transcript”:permissiondenied.Check the NativeLink log file
解决方法:modelsim多开,关掉modelsim
IP核PLL的调用
在top文件中定义定义一个寄存器可以存放时钟信号,并且例化IP核即可。
reg clk_40M;
PLL_40M_0002 pll_40m_inst (
.refclk (sys_clk), // refclk.clk
.outclk_0 (clk_40M), // outclk0.clk
);
modelsim仿真时编译test bench名称一定要与模块一致
模块的输入输出不能直接进行赋值,要定义一个寄存器连接到输出上,对寄存器进行操作,否则会没有输出波形,目前不知道为什么。(但是输入好像不用)
assign ADC_finish = finish_flag;
assign ADC_output = ADC_output_reg;
assign ADC_SDI = sdi_out;
assign ADC_clk = clk_40M & adc_clk_enable;
assign ADC_CONVST = convst;
定义模块连接的信号线时要注意其位宽,否则传不出去数据 TAT
注意wire[31:0]A_IEEE754;的[31:0]