一、如果线网类型变量说明后未赋值,起缺省值是(z)
线网数据类型就是表示verilog结构化元件间的物理连线,它的值由驱动元件的值决定,如果没有驱动元件连接到线网,线网的缺省值为z(高阻)。线网的数据类型有tri、wand和wire等。
寄存器数据类型表示一个抽象的数据存储单元,它只能在alway语句和initial语句等过程中被赋值,它的缺省值默认为x(未知),寄存器数据类型有integer、real和reg等。
二、
面积优化:资源共享、串行化
速度优化:流水线设计、寄存器配平、关键路径法、乒乓操作法、树形结构法
寄存器配平:寄存器配平是通过配平寄存器之间的组合延时逻辑块来实现速度优化,两个组合逻辑块延时差别过大,导致设计总体工作频率Fmax取决于T1,即最大的延时模块,从而使设计整体性能受限。将延时较大的组合逻辑1的部分逻辑转移到组合逻辑2中,以减小延时T1,使t1≈t2,且满足T1+T2=t1+t2。寄存器配平后的图8结构中Fmax≈1/t1>1/T1,从而提高了设计速度。
关键路径法:关键路径是指设计中从输入到输出经过的延时最长的逻辑路径,优化关键路径是提高设计工作速度的有效方法。图9中Td1>Td2,Td1>Td3,关键路径为延时Td1的模块,由于从输入到输出的延时取决于延时最长路径,而与其他延时较小的路径无关,因此减少Td1则能改善输入到输出的总延时。
可参考:https://blog.csdn.net/qq_26652069/article/details/100634180
三、timescale x/y x代表时间单位,表示仿真的时候以x为时间单位,y代表时间的精度
四、
reg[7:0] mema[255:0]正确的赋值是()给的答案是A,但是感觉答案应该为AB
A、mema[5]=3’d0
B、mema[5][3:0]=4’d1
C、mema[8][8] = 8’d0
D、都正确
C肯定错了,经过仿真AB都能正确赋值。
五、DDR3
三种频率:内核频率(内存的真实运行频率);时钟频率(即I/O Buffer输入输出缓冲的传输频率);等效频率(数据传输频率)。
DDR3-1066数据位宽为32bit,则等效频率为1066Mbps,内核频率为1066/8 = 133Mbps
DDR3-1066的理论带宽 = 1066 * 32 / 8 = 4264;
某设计中使用了DDR3-1066,数据位宽32bit,FPGA工程中实现的DDR3 controller时钟为800MHz, 应用端时钟为200MHz, 数据位宽为128bit,请问,应用端DDR3可用的理论带宽为()
4264MB/s
3200MB/s
6400MB/s
2132MB/s
DDR3-1066 理论带宽 = 1066 * 32 / 8 = 4264
FPGA内存带宽 = 800 * 32 / 8 = 3200
应用端带宽 = 200 * 128 / 8 = 3200
取瓶颈3200
六、
建立时间为在时钟沿到达寄存器之前,数据需要稳定的时间,如果不满足寄存器的建立时间,则可能会产生亚稳态;
保持时间为在时钟沿到达寄存器之后,数据需要稳定的时间,如果不满足寄存器的建立时间,则可能会产生亚稳态;
建立时间与保持时间都是器件的固有属性,需要对时钟频率、组合逻辑延时进行改变以满足建立时间,对组合逻辑演示进行改变以满足保持时间。
亚稳态即在时钟上升沿到来时,数据不满足寄存器的建立时间或者保持时间,使寄存器采到的数据的值不确定的状态,该状态会随着后面的组合逻辑与时序电路进行传播,造成极大的危害,需要避免,避免的方法有增加寄存器。
七、异步FIFO
异步FIFO设计注意事项有哪些?
(1)在地址信号跨时钟域时需要对其进行二进制码转格雷码的转换并进行目标时钟域的时钟打两拍同步,以防止亚稳态的产生。
(2)写满信号由读地址同步到写时钟域并与写地址进行比较产生,读空信号由写地址同步到读时钟域并与读地址进行比较产生。这样可以在第一时间得到读空与写满的信息,并对异步fifo进行操作。
(3)异步fifo的深度需要考虑到写状态的背靠背写入状态以得到最适合的深度。
(4)读写地址需要扩展一位来判断是读空还是写满,当扩展后的读写地址的格雷码相等时为读空,若其前两位不同,后面相等时为写满。
在跨时钟域设计中通常使用异步FIFO,从而实现不同苏联间速率的匹配问题。
设计难点:读写指针和空满信号的处理
FIFO的读写指针是指读写地址&#