《opDown设计方法》PPT课件.ppt

上传人:san****019 文档编号:7350434 上传时间:2020-03-20 格式:PPT 页数:30 大小:293.91KB
返回 下载 相关 举报
《opDown设计方法》PPT课件.ppt_第1页
第1页 / 共30页
《opDown设计方法》PPT课件.ppt_第2页
第2页 / 共30页
《opDown设计方法》PPT课件.ppt_第3页
第3页 / 共30页
点击查看更多>>
资源描述
第七讲Top Down的设计方法 7 1Top Down VerilogHDL的设计方法论归纳起来主要有两种 自下而上 Bottom Up 的设计方法与自上而下 Top Down 的设计方法 另外 还可以根据实际情况 利用这两种方法的组合进行综合设计 即综合设计方法 Top Down设计 即自顶向下的设计 将设计分为几个不同的层次 系统级 功能级 门级 开关级等 按照自上而下的顺序 在不同的层次上 对系统进行设计与仿真 在Top Down的设计中 由系统用户对整个系统进行方案设计和功能划分 把系统划分为基本单元 然后再把每个基本单元划分为下一层次的基本单元 直到可以直接用元件库中的元件来实现为止 Top Down设计方式示意图 如图所示 在Top Down的设计过程中 需要有EDA工具的支持 有些步骤EDA工具可以自动完成 比如综合等 有些步骤EDA工具为用户提供了操作平台 Top Down设计方法一般采用HDL语言 具有以下一些优点 1 在设计周期中开始就做好了系统分析 2 由于设计的主要仿真和调试过程是在高层次完成的 所以能够在早期发现结构设计上的错误 避免设计工作的浪费 同时减少了逻辑仿真的工作量 3 自上而下的设计方法方便了从系统划分和管理整个项目 使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能 并可减少设计人员 避免不必要的重复设计 提高了设计的一次成功率 自上而下的设计方法有以下缺点 1 因采用的综合工具不一样 得到的最小单元不标准 2 制造成本高 频率计设计示例 频率计是测量信号频率常用的仪器 其工作原理是在单位时间内对信号进行计数 从而测量出信号的频率 现设计一个6位频率计 其基准时钟为1MHz 要求频率测量范围为1Hz到1MHz 根据频率计的工作原理 其组成部分如下 1 1KHz时钟发生器 2 闸门电路 3 计数器 4 显示电路 显示电路又可以分割为计数值锁存器 扫描计数器 24选4多路开关 BCD 七段译码器 3 6译码器 1 1KHz时钟发生器 modulecounter1K clk1k mclk outputclk1k inputmclk reg 8 0 count regout always posedgemclk beginif count 9 o499 beginclk1k clk1k count 4 d0 endelsecount count 1 endendmodule 2 闸门电路 moduleGateGen load clr clk1k outputload clr inputclk reg 9 0 count always posedgeclk1k beginif count 0 begincount count 1 load 0 clr 1 end elseif count 1000 begincount 10 d0 load 1 clr 0 endelsebegincount count 1 load 0 clr 0 endendendmodule 3 计数器 Modulecounter result load clr signal outputload clr output 23 0 result inputsignal reg 23 0 count reg 23 0 result 计数always posedgeclrorposedgesignal beginif clr count 24 h000000 elseif count 24 d999999 count 24 h000000 elseif count 19 0 20 h99999 begincount 19 0 0 count 23 20 count 23 20 1 end elseif count 15 0 16 h9999 begincount 15 0 0 count 23 16 count 23 16 1 endelseif count 11 0 12 h999 begincount 11 0 0 count 23 12 count 23 12 1 endelseif count 7 0 8 h99 begincount 7 0 0 count 23 8 count 23 8 1 end elseif count 3 0 4 h9 begincountt 3 0 0 count 23 4 count 23 4 1 endelsecount count 1 end 输出计数值always posedgeclrorposedgeload beginif clr result 24 h0000 elseresult count endendmodule 4 显示电路 moduledisled seg7 segsel bcdin clk1k inputclk1ms input 23 0 bcdin output 7 0 seg7n output 5 0 segsel endmodule 5 顶层文件 moduletop ledseg7 ledsel signal mclk inputsin mclk 输入信号和1MHz时钟输入output 7 0 ledseg7 output 5 0 ledsel wireclk1k clr load wire 23 0 result wire 7 0 seg7 wire 5 0 segsel 1KHz时钟分频器counter1KU1 clk1k clk1k mclk mclk 闸门电路GateGenU2 load load clr clr clk1k clk1k 测量单元CounterU3 result result load load clr clr signal signal LED显示DisledU4 seg7 ledseg7 segsel ledsel bcdin result clk1k clk1K endmodule 7 2存储器建模 若干个相同宽度的向量构成数组 array 也就是存储器 例如 reg 7 0 mymem 1023 0 上面的语句定义了一个1024个字节 每个字节宽度为8位的存储器 再如 reg 3 0 Amem 63 0 Amem为64个4位寄存器的存储器regBmen 5 1 Bmem为5个1位寄存器的存储器 也可以用parameter参数定义存储器的尺寸 比如 parameterwordwidth 8 memsize 1024 reg wordwidth 1 0 mymem memsize 1 0 上面的语句定义了一个宽度为8位 1024个存储单元的存储器 该存储器的名字是mymem 若对该存储器中的某一单元赋值的话 可采用如下方式 mymem 8 1 mymem存储器中的第8个单元被赋值为1mymem 25 65 mymem存储器中的第25个单元被赋值为65不允许对存储器进行位选择和域选择 不过 可以首先将存储器的值赋给寄存器 然后对寄存器进行位选择和域选择 为存储器赋值的另一种方法是使用系统任务 仅限于电路仿真中使用 readmemb 加载二进制值 readmemh 加载十六进制值 这些系统任务从指定的文本中读取数据并加载到存储器 文本文件必须包含相应的二进制数或者十六进制数 存储器建模必须注意以下两个方面的问题 1 声明存储器容量的大小 2 明确对存储器访问操作的权限 例如 指出可以对存储器做以下哪几种操作 只读读写同步读写多次读 同时进行一次写多次同步读写 同时提供一些方法保证一致性 例1 ROM建模 timescale1ns 10psmodulemyrom read data addr read en inputread en input 3 0 addr output 3 0 read data reg 3 0 read data reg 3 0 mem 0 15 initial readmemb my rom data mem always addrorread en if read en read data mem addr endmodule 例2 RAM建模 timescale1ns 1nsmodulemymem data addr read write inout 3 0 data inout 3 0 addr inputread write reg 3 0 memory 0 15 4bits 16words 从存储器读出到总线上assigndata read memory addr 4 bz 从总线写入存储器always posedgewrite memory addr data endmodule RAM模型跟ROM模型相比 它必须具有读写能力 进行读写时通常使用相同的数据总线 需要新技术来处理双向总线 当读信号无效时 RAM模型与总线脱离 如果此时写信号也无效 总线无驱动源 则总线进入高阻状态 这就避免了RAM中的读写竞争 上例的RAM模块是可综合的 但综合出来是一大堆寄存器 占比较大的面积 经济上不太合算 7 3双向口建模 使用inout关键字声明端口为双向口 inout 7 0 databus 使用双向口必需遵循下面的规则 inout口只能声明为网络连接类型 不允许把它声明为寄存器类型 所以仿真器能确定多个驱动源的最终值 在设计中 每次只能从一个方向来驱动inout口 例如 当使用总线读RAM中的数据时 如果同时又向RAM模型的双向数据总线写数据 就会产生逻辑竞争 导致总线数据无法确定 所以必须为inout口设计控制逻辑 只有这样才能保证正确的操作 使用双向口时还要注意 声明一个inout口 可以用来输入或输出数据 inout口默认为网络连接类型 不允许在过程块 initial或always块 中对网络连接类型的数据进行过程赋值 但可以在过程块外把一个寄存器数据类型通过连续赋值语句赋给它 inout口 或者把它与用户定义的源语 UDP 相连 必须为inout口设计控制逻辑 用来保证正确的操作 当把inout口作为输入口时 必须通过控制逻辑禁止输出到inout口 例1 使用Verilog中的基本元件 bufif1 为双向口建模 modulebus xcvr bus a bus b en a b en b a inoutbus a bus b inputen a b en b a bufiflb1 bus b bus a en a b bufiflb2 bus a bus b en b a 结构模块逻辑endmodule 例2 使用连续赋值为双向口建模 modulebus xcvr bus a bus b en a b en b a inoutbus a bus b inputen a b en b a assignbus b en a b bus a bz assignbus a en b a bus b bz 结构模块逻辑endmodule 例3 存储器的端口建模 moduleram cell databus rd wr inoutdatabus inputrd wr regdatareg assigndatabus rd datareg bz always negedgewr datareg databus endmodule该例中存储单元在wr的下降沿到达时存入数据 上页模块在wr处于高电平时 通过数据总线写入数据 但必须保证wr的高电平维持时间长于数据的写入时间 在rd处于高电平时 上述存储单元通过数据总线读出数据 由于此模型为单口存储模型 因此wr变低电平时 rd不能同时为高电平 否则就无法确定存储器的读出 写入的结果 7 4IP的使用 IP核是具有知识产权 IntellectualProperty 的集成电路芯核的简称 其作用是把一组拥有知识产权的电路设计集合在一起 构成芯片的基本单位 以供设计时搭积木之用 其实可以把IP理解为一颗ASIC 以前是ASIC做好以后供人家在PCB上使用 现在是IP做好以后让人家集成在更大的芯片里 IP核是一段具有特定电路功能的硬件描述语言程序 该程序与集成电路工艺无关 可以移植到不同的半导体工艺中去生产集成电路芯片 利用IP核设计电子系统 引用方便 修改基本元件的功能容易 具有复杂功能和商业价值的IP核一般具有知识产权 尽管IP核的市场活动还不规范 但是仍有许多集成电路设计公司从事IP核的设计 开发和营销工作 IP核有两种 与工艺无关的VHDL程序称为软核 具有特定电路功能的集成电路版图称为硬核 硬核一般不允许更改 利用硬核进行集成电路设计难度大 但是容易成功流片 固核是一种介于软核与硬核之间的 它既不独立 也不固定 可根据用户要求作部分修改 固核允许用户重新定义关键的性能参数 内部连线表有的可以重新优化 其使用流程同软核 如内部连线表不能优化时 使用流程与硬核相同 另外从功能上划分有嵌入式IP核和通用IP核 嵌入式IP核指可编程IP模块 主要是CPU与DSP 通用IP核模块包括存储器 存储控制器 通用接口电路 通用功能模块等
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!