1、从算法设计到硬线逻辑的实现从算法设计到硬线逻辑的实现复杂数字逻辑系统的复杂数字逻辑系统的Verilog HDLVerilog HDL设计方法简介设计方法简介数字信号处理、计算、程序数字信号处理、计算、程序 算法和硬线逻辑的基本概念算法和硬线逻辑的基本概念 数字信号处理 计算(Computing)算法和数据结构 编程语言和程序 体系结构 硬线逻辑 数字信号处理的基本概念数字信号处理的基本概念 现代电子系统设备中广泛使用了数字信号处理 专用集成电路。用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。处理工作从本质上说都是数学运算。完全可以用计算机或微处理器来
2、完成处理工作。计算(计算(Computing)的基本概念的基本概念 “Computing 这门学问研究怎样系统地有步骤地描述和转换信息,实质上它是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能。”(摘自Denning et al.,“Computing as a Discipline,”Communication of ACM,January,1989)。算法和数据结构的基本概念算法和数据结构的基本概念 算法就是解决特定问题的有序步骤。数据结构就是解决特定问题的相应的模型。编程语言和程序的基本概念编程
3、语言和程序的基本概念 编程语言:编程语言:程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。程序:程序:由编程语言所表达的算法问题的求解过程就是。常用的编程语言:常用的编程语言:C、Pascal、Fortran、Basic或汇编语言。计算机体系结构和硬线逻辑计算机体系结构和硬线逻辑的基本概念的基本概念 计算机体统结构:计算机体统结构:是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。硬线逻辑:硬线逻辑:由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。数字信号处理系统的分类数字信号处理系统的分类 非实
4、时系统非实时系统:信号处理的工作是可以事后进行。实时系统实时系统:信号处理的工作必须在规定的很短的时间内完成。数字信号处理系统的实现数字信号处理系统的实现 非实时系统非实时系统:通用的计算机和利用通用计算机改装的设备,主要工作量是编写“C”程序。实时系统实时系统:信号处理专用的微处理器为核心的设备,主要工作量是编写汇编程序。实时数字信号实时数字信号处理系统实现中存在的技术难点处理系统实现中存在的技术难点 1)算法问题。2)电路实现问题:如果由最快的信号处理专用的微处理器为核心的设备也来不及处理如此大量的数据怎么办呢?实时数字信号实时数字信号处理系统实现中存在的技术难点处理系统实现中存在的技术难
5、点和解决办法和解决办法 1)算法问题。研究并行快速算法。2)电路实现问题:设计并研制具有并行结构的数字和计算逻辑结构。实时数字信号实时数字信号处理系统实现中存在的技术难点处理系统实现中存在的技术难点和解决办法和解决办法 电路实现的两个方向:FPGA专用集成电路 实时数字信号实时数字信号处理系统实现中存在的技术难点处理系统实现中存在的技术难点和解决办法和解决办法 用于信号处理的 FPGA 和专用集成 电路(ASIC)设计的方法:Verilog HDL建模、仿真、综合和全面验证。复杂数字逻辑系统的复杂数字逻辑系统的Verilog HDLVerilog HDL设计方法简介设计方法简介?嵌入式微处理机
6、系统嵌入式微处理机系统 数字信号处理系统数字信号处理系统 高速并行计算逻辑高速并行计算逻辑 高速通信协议电路高速通信协议电路 高速编码高速编码/解码、加密解码、加密/解密电路解密电路 复杂的多功能智能接口复杂的多功能智能接口 门逻辑总数超过几万门达到几百甚至达几千门逻辑总数超过几万门达到几百甚至达几千 万门的数字系统万门的数字系统 怎样设计如此复杂的系统?Top-Down 设计思想 系 统 级 设 计模 块 模 块 模 块 模 块 模 块模 块 模 块 C 模 块 模 块 模 块 HDL 设 计 文 件 HDL 功 能 仿 真 HDL 综 合 优 化 、布 局 布 线 布 线 后 门 级 仿
7、真 图 1-6-3 HDL 设 计 流 程 图 电 路 功 能 仿 真 电 路 图 设 计 文 件 电 路 制 造 工 艺 文 件 或 FPGA 码 流 文 件 有 问 题 没 问 题有 问 题 没 问 题 有 问 题 没 问 题 与 实 现 逻 辑 的 物理 器 件 有 关 的 工 艺技 术 文 件确 定 实 现 电 路的 具 体 库 名?Verilog HDL 公开发表 CADENCE 公司购买 Verilog 版权 1990 1989 1980s Verilog-XL 诞生 模拟和数字都适用的 Verilog 标准 公开发表 1998?VerilogHDLIEEE1364 标准 公开发表
8、 有关 VerilogHDL 的全部权利都移交给 OVI(Open Verilog International)1995 1990 VHDL VITAL 系统级 算法级 寄存器传输级 逻辑门级 开关电路级 行为级 的抽象 VerilogHDL 与 VHDL 建 模 能 力 的 比 较 Verilogabsloutabslout这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。RTL模块的数据流动必须基于时钟。RTL模块在每个时钟的沿时刻,其变量的值必定是精确的。RTL模块是可综合的,它是行为模块的一个子集合。outabslse
9、lbselanslVerilog HDL入门 Verilog HDL模块的测试include myadder.vmodule t;wire 8:0 sumout;reg 7:0 ain,bin;reg clk;initial begin rst=1;clk=0;ain=0;bin=3;#70 rst=0;#70 rst=1;end always#50 clk=clk;always(posedge clk)begin ain=ain+2;bin=bin+5;endVerilog HDL测试 由于 t 模块中Verilog HDL语句的功能 可以对myadder 模块进行测试 myadder 模块
10、输入了必须的信号:rst,clk,ain,bin 观测该模块的输出:sumout 看一看它是否符合设计要求。有关Verilog HDL的几个重要基本概念 1)1)综合:综合:通过工具把用Verilog HDL描述的模块自动转换为用门级电路网表表示的模块的过程。2)2)寄存器传输级寄存器传输级Verilog HDLVerilog HDL模块:模块:也可称为RTL(Verilog)HDL模块。它是符合特定标准和风格的描述状态转移和变化的 Verilog HDL模块。能用综合器把它转换为门级逻辑。有关Verilog HDL的几个重要基本概念 3)3)Verilog HDLVerilog HDL测试模
11、块测试模块:用Verilog HDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。4)4)Verilog HDLVerilog HDL顶层(测试)模块顶层(测试)模块:同上。有关Verilog HDL的几个重要基本概念 5)5)布局布线布局布线:把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使其与具体的某种FPGA或某种ASIC工艺库器件对应起来,并加以连接的过程。6)6)Verilog HDLVerilog HDL后仿真测试模块后仿真测试模块:同3)、4),但被测试的模块至少是一个
12、门级描述的或用具体FPGA(ASIC)库器件(带时间延迟信息)描述的结构型Verilog HDL 模块。Verilog 模块由两部分组成:端口信息和内部功能。模块由两部分组成:端口信息和内部功能。module block1(a,b,c,d,e);input a,b,c;output d,e;assign d=a|(b&c);assign e=(b&c);endmoduleabcdeVerilog HDL模块的结构abcdeabcedVerilog HDL模块中的逻辑表示abcde并行和顺序逻辑关系的表示aout2BUFFbINVout1dout2AND2i1clkout1D QDFFclkDF
13、FcD QD QabDFF clkDFFcD Qab两种不同的赋值语句区别要点。-设计项目举例:设计项目举例:-myproject -可综合部分可综合部分(我们想要设计的逻辑电路部分):(我们想要设计的逻辑电路部分):-mk_1.v,mk_2.v,mk_3.v,.mk_8.v -mk_11.v,mk_12.v,mk_13.v.-mk_21.v,mk_22.v,mk_23.v.-.-mk_81.v,mk_82.v,mk_83.v.。(续上页)续上页)else begin#(5*timeslice)read=1;#(timeslice)read=0;end always(posedge ack)begin DataToRam=DataToRam+2;addr=addr+1;endendmodule 。信号模块信号模块 xh1(.clock(clk),.reset(rst),.ack(ackn).);.可综合模块可综合模块 mysj1(.clock(clk),reset(rst),.ack(ackn).);.外围模块外围模块 ram1(.read(rd),.write(wrt),.data(databus).);.endmodule