verilog学习日志_我的verilog学习笔记
verilog学习日志由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“我的verilog学习笔记”。
1.解决xilinx的仿真库的编辑问题
2.模块的做法和调用方法,带参数模块的应用:两种方法modelname #(value)madelcase();
二、用defparam 改变参数。
3.Begin ……end之间是串行执行的语句。在实际的电路中各条语句并不是完全串行的。4.Fork……join之间是并行执行的语句,但是不可综合;
5.表征过程模块的四种工程模块:initial模块,always模块,task模块,function模块;一个程序中可以有多个initial模块和always模块,但是initial模块只执行一次,不可综合,而always模块是不断重复执行的,可以综合。6.数据类型两大类:线网类型和寄存器类型
7.线网类型:结构化原件之间的物理连接,默认值高阻z;寄存器表示数据的存储单元,默认值为x;寄存器类型数据保持最后一次赋值,而线型数据需要持续的驱动; 8.线网数据场用来以关键字aign指定组合逻辑信号。模块中输入输出默认为wire类型,可综合的线网类型有wire,tri,supply0,supply1;线网类型的变量赋值只能通过aign来完成,不能用于always语句。
9.寄存器类型的数据没有强弱之分,且所有的寄存器类型变量都必须明确给出类型说明(无默认状态)。10.If语句指定了一个有限编码逻辑,case结果是并行的,没有优先级,if……else占用面积小但速度较慢,case语句占用面积大,但速度较快。11.如果if……else语句块为单句则直接写就可以,如果不只一句则要用begin……end括起来。12.循环语句for,while,repeat可以综合,forever不可综合。13.对于reg型数据不能用aign赋值。
14.拼接数据时最好将数据的进制形式都写详细,否则仿真出错,不知为何?例如:parameter a = 8;b = {{a{1’b0}},c};
15.module mult_8b_for(16.a,b,q 17.);18.parameter bsize = 8;19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.input [bsize1:0] b_t;reg [bsize1)begin
if(b_t[0])
begin
q = q + a_t;//一定要使用阻塞赋值
end else 36.37.38.39.40.begin
q = q;//一定要使用阻塞赋值
end
a_t = a_t >1;//一定要使用阻塞赋值
41.42.end end
43.Endmodule
44.Always语句中使用非阻塞赋值“
45.Task和function是综合的,不过综合出来都是组合电路。46.在第一行Task语句中不能列出端口名称。
47.Task中可以调用其他的任务或函数,也可以调用自身;
48.任务定义的结构体内部能出现always或initial过程块(可能是因为其只能综合成组合电路的缘故吧)。但是可以在always或initial中调用。调用时要与声明的端口顺序相同。且只能在过程块中调用。
49.任务的输出端口必须和寄存器类型的数据变量对应。50.Function不允许有输出端口的声明,函数定义在函数内部会隐式的定义一个寄存器变量,该寄存器变量和函数同名并且位宽也一致。函数内部不能调用任务。
51.触摸板如何禁止:下载一个UltraNav驱动按上,到控制面板鼠标里面就可以禁止触摸板了。Win7下可以直接去禁止,不用安装驱动程序。
52.保证敏感信号列表的完备性。不要在组合逻辑中引入环路。
53.同步时序电路的准则:
1、单时钟策略,单时钟沿策略。
2、避免使用门控时钟。
3、不要再子模块内部使用计数器分频产生所需时钟。推荐的方式是有一个专门的子模块来管理系统时钟。
54.同步电路在目前数字电路系统中占绝对优势,和异步电路相比有下列优势:对温度、电压、生产过程等外部参数的适应性强;可以消除毛刺和内部的歪斜的数据,能将设计频率提高的吉赫兹。但是需要更多的资源,而且其时钟翻转频率高,功耗也比较大。55.关键路径:最大的可能时钟频率是由电路中最慢的逻辑路径决定的。一种消除这种限制的方法是将复杂的运算分开成为数个简单的运算,这种技术称为pipelining。56.要输就输给追求,要嫁就嫁给幸福。
57.第九章的二级流水线仿真时结果中显示不对,不知道为何,可能是testbench写的不好,有时间一定要搞明白。58.提高工作速度的两种方式:并行方式和流水线方式。核心思想是面积换速度。59.‘timescale 1ns / 1ps 代表时延单位为1ns,时延精度为1ps。
60.亚稳态:多时钟设计中,必然存在亚稳态,当触发器的建立时间和保持时间没有达到要求是,触发器就会处于逻辑1和逻辑0之间的第3中状态。及亚稳态。
61.状态机不仅仅是一种电路,而且是一种设计思想,他可以说是一个广义时序电路,状态机是数字设计的“大脑”。
62.状态机开发流程:首先要抽象出事物的状态,再次明确状态和输入输出之间的关系,让后得到系统的状态转移图,并用verilog实现。
63.Moore状态机输出仅仅依赖于当前状态,与输入无关,下一个状态与输入和当前状态有关,64.Mealy状态机的输出与输入和当前状态有关,65.状态机的容错处理:对剩余状态进行处理。方法:转入空闲状态、转入特定状态、转入预定义的专门处理错误的状态,如报警。66.状态机设计原则:单独用一个verilog模块来描述一个有限状态机。使用代表状态名的参数parameter来给状态赋值,而不是用宏定义。在组合always块中使用阻塞赋值,在时序always块中使用非阻塞赋值,67.利用三段式设计状态机。第一段处理当前状态的赋值。第二段处理下一个状态的赋值。第三段处理输出的赋值。
68.Case后面没有begin 结尾处加endcase;
69.利用stateCAD做状态机,注意填写条件是没有标点符号,而在写输出时有标点;ise软件在10版本以后就没有自带的CAD软件了,下了一个单独运行的一样可以用。70.同步整形电路:同步电路具备最稳定的工作状态和工作能力因此经常需要将外部输入的异步信号进行同步处理(与系统时钟同步)和整形(经输入信号由不规则的波形提取为具有一个时钟周期长的脉冲信号)。313页。71.Aign只能用来给wire和output赋值,不能用来给reg类型赋值;
72.Xst:528-Multi-source in Unit on signal;this signal is connected to multiple drivers.;此文件中两个信号量相互驱动,编译通不过怎么办? 73.我让你记住他,然后忘掉他。74.爱是给予所以你永远不会失去。
75.综合synthesize:查看综合报告、查看RTL级原理图、检查语法。实现:implement,翻译、映射、布局布线,实现之前要进行约束条件的编辑。76.