免费预览已结束,剩余43页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 EDA技术概述 1 1EDA技术与ASIC设计和FPGA开发有什么关系 FPGA在ASIC设计中有什么用途 答 EDA技术进行电子系统设计的最后目标 是完成专用集成电路 ASIC 的设计和实现 FPGA是实现这一途径的主流器件 它们的特点是直接面向用户 具有极大的灵活性和通用性 使用方便 硬件测试和实现快捷 开发效率高 成本低 上市时间短 技术维护简单 工作可靠性好等 FPGA的应用是EDA技术有机融合软硬件电子设计技术 ASIC设计 以及对自动设计与自动实现最典型的诠释 1 2与软件描述语言相比 Verilog有什么特点 答 Verilog语言的特点 1 按照设计目的 Verilog程序可以划分为面向仿真和面向综合两类 而可综合的Verilog程序能分别面向FPGA和ASIC开发两个领域 2 能在多个层次上对所设计的系统加以描述 从开关级 门级 寄存器传输级 RTL 至行为级都可以加以描述 3 灵活多样的电路描述风格 1 3什么是综合 有哪些类型 综合在电子设计自动化中的地位是什么 答 综合 Synthesis 就其字面含义应该是 把抽象的实体结合成单个或统一的实体 在电子设计领域 综合的概念可以表述为 将用行为和功能层次表达的电子系统转换为低层次的 便于具体实现的模块组合装配的过程 1 从自然语言转换到Verilog语言算法表述 即自然语言综合 2 从算法表述转换到寄存器传输级 RegisterTransportLevel RTL 表述 即从行为域到结构域的综合 也称行为综合 3 从RTL级表述转换到逻辑门 包括触发器 的表述 即逻辑综合 4 从逻辑门表述转换到版图级表述 如ASIC设计 或转换到FPGA的配置网表文件 可称为版图综合或结构综合 综合器就是能够将一种设计表述形式自动向另一种设计表述形式转换的计算机程序 或协助进行手工转换的程序 它可以将高层次的表述转化为低层次的表述 可以将行为域转化为结构域 可以将高一级抽象的电路描述 如算法级 转化为低一级的电路描述 如门级 并可以用某种特定的 技术 如CMOS 实现 1 4IP在EDA技术的应用和发展中的意义是什么 答 IP就是知识产权核或知识产权模块的意思 在EDA技术和开发中具有十分重要的地位 美国著名的Dataquest咨询公司将半导体产业的IP定义为 用于ASIC或FPGA中的预先设计好的电路功能模块 IP分软IP 固IP和硬IP 软IP是用HDL等硬件描述语言描述的功能块 但是并不涉及用什么具体电路元件实现这些功能 固IP是完成了综合的功能块 它有较大的设计深度 以网表文件的形式提交客户使用 硬IP提供设计的最终阶段产品 掩模 随着设计深度的提高 后续工序所需要做的事情就越少 当然 灵活性也就越小 不同的客户可以根据自己的需要订购不同的IP产品 1 5叙述EDA的FPGA CPLD设计流程 以及涉及的EDA工具及其在整个流程中的作用 答 完整地了解利用EDA技术进行设计开发的流程对于正确地选择和使用EDA软件 优化设计项目 提高设计效率十分有益 一个完整的 典型的EDA设计流程既是自顶向下设计方法的具体实施途径 也是EDA工具软件本身的组成结构 基于EDA的FPGA CPLD开发流程 1 6OLMC有何功能 说明GAL是怎样实现可编程组合电路与时序电路的 答 输出逻辑宏单元 OutputLogicMacroCell OLMC 此结构使得PLD器件在组合逻辑和时序逻辑中的可编程或可重构性能都成为可能 GAL16V8型号的器件 它包含了8个逻辑宏单元OLMC 每一个OLMC可实现时序电路可编程 而其左侧的电路结构是与阵列可编程的组合逻辑可编程结构 GAL的OLMC单元设有多种组态 可配置成专用组合输出 专用输入 组合输出双向口 寄存器输出 寄存器输出双向口等 为逻辑电路设计提供了极大的灵活性 GAL的输出逻辑宏单元OLMC中含有4个多路选择器 通过不同的选择方式可以产生多种输出结构 分别属于3种模式 一旦确定了某种模式 所有的OLMC都将工作在同一种模式下 图1 14即为其中一种输出模式对应的结构 图1 14寄存器输出结构 1 7什么是基于乘积项的可编程逻辑结构 什么是基于查找表的可编程逻辑结构 答 基于乘积项的可编程结构 即由可编程的 与 阵列和固定的 或 阵列组成 可编程的查找表 LookUpTable LUT 结构 LUT是可编程的最小逻辑构成单元 大部分FPGA采用基于SRAM 静态随机存储器 的查找表逻辑形成结构 即用SRAM来构成逻辑函数发生器 一个N输入LUT可以实现N个输入变量的任何逻辑功能 如N输入 与 N输入 异或 等 1 8就逻辑宏单元而言 GAL中的OLMC CPLD中的LC FPGA中的LUT和LE的含义和结构特点是什么 它们都有何异同点 答 输出逻辑宏单元 OutputLogicMacroCell OLMC 此结构使得PLD器件在组合逻辑和时序逻辑中的可编程或可重构性能都成为可能 MAX7000S系列器件包含32 256个逻辑宏单元 LogicCell LC 其单个逻辑宏单元结构如图1 15所示 LUT即可编程的查找表 LookUpTable LUT 结构 是可编程的最小逻辑构成单元 大部分FPGA采用基于SRAM 静态随机存储器 的查找表逻辑形成结构 即用SRAM来构成逻辑函数发生器 一个N输入LUT可以实现N个输入变量的任何逻辑功能 如N输入 与 N输入 异或 等 LE是CycloneIIIFPGA器件的最基本的可编程单元 LE主要由一个4输入的查找表LUT 进位链逻辑 寄存器链逻辑和一个可编程的寄存器构成 1 9为什么说用逻辑门作为衡量逻辑资源大小的最小单元不准确 答 专业习惯是将OLMC及左侧的可编程与阵列合称一个逻辑宏单元 即标志PLD器件逻辑资源的最小单元 由此可以认为GAL16V8器件的逻辑资源是8个逻辑宏单元 而目前最大的FPGA的逻辑资源达数十万个逻辑宏单元 也有将逻辑门的数量作为衡量逻辑器件资源的最小单元 如某CPLD的资源约2000门等 但此类划分方法误差较大 1 10标志FPGA CPLD逻辑资源的逻辑宏单元包含哪些结构 答 CPLD MAX7000S 系列中的逻辑宏单元由3个功能块组成 逻辑阵列 乘积项选择矩阵和可编程寄存器 它们可以被单独地配置为时序逻辑和组合逻辑工作方式 其中逻辑阵列实现组合逻辑 可以给每个逻辑宏单元提供5个乘积项 乘积项选择矩阵 分配这些乘积项作为到 或门 和 异或门 的主要逻辑输入 以实现组合逻辑函数 或者把这些乘积项作为宏单元中寄存器的辅助输入 清零 Clear 置位 Preset 时钟 Clock 和时钟使能控制 ClockEnable FPGA CycloneIII 器件的可编程资源主要来自逻辑阵列块LAB 而每个LAB都由多个逻辑宏单元 LogicElement LE 构成 LE是CycloneIIIFPGA器件的最基本的可编程单元 LE主要由一个4输入的查找表LUT 进位链逻辑 寄存器链逻辑和一个可编程的寄存器构成 1 11解释编程与配置这两个概念 答 基于电可擦除存储单元的EEPROM或Flash技术 CPLD一般使用此技术进行编程 Progam CPLD被编程后改变了电可擦除存储单元中的信息 掉电后可保持 Altera的FPGA器件有两类配置下载方式 主动配置方式和被动配置方式 主动配置方式由FPGA器件引导配置操作过程 它控制着外部存储器和初始化过程 而被动配置方式则由外部计算机或控制器控制配置过程 对于SRAM型FPGA 在实用中必须利用专用配置器件来存储编程信息 以便在上电后 该器件能对FPGA自动编程配置 EPC器件中的EPC2型号的器件是采用Flash存储工艺制作的具有可多次编程特性的配置器件 第2章 Verilog程序结构与数据类型 习题 2 1wire型变量与reg型变量的什么本质区别 它们可用于什么类型语句中 答 书上P33 35 第2章Verilog程序结构与数据类型 线网 wire 表示硬件单元之间的连接 就像在真实的电路中一样 线网由其连接器件的输出端连续驱动 线网不能储存值 而且它必须受到驱动器 例如门或连续赋值语句 assign 的驱动 如果没有驱动源 则线网的值为z reg寄存器用来表示存储元件 它保持原有的数值 通过赋值语句可以改变寄存器储存的值 其作用与改变触发器储存的值相当 reg类型数据的默认初始值为不定值x 定义为Net型的变量常被综合为硬件电路中的物理连接 其特点是输出的值紧跟输入值的变化而变化 因此常被用来表示以assign关键词引导的组合电路描述 Register类型变量必须放在过程语句中 如initial always引导的语句中 通过过程赋值语句 包括阻塞与非阻塞语句 完成赋值操作 换言之 在always和initial等过程结构内被赋值的变量必须定义成Variable类型 2 3以下的标符是否合法 XOR or 74LS04 4Badder ASC SMD A5加法器 BEGIN答 正确XOR BEGIN ASC 还有一类标识符 即转义标识符 EscapedIdentifiers 转义标识符以斜杠 开头 以空白符结尾 可以包含任何字符 例如 8031 Gt 不正确74LS04 4Badder 起始为数字 A5加法器 or 关键词 SMD 任何标识符必须以英文字母或下划线开头 2 2下列数字的表述方式是否正确 4 b 1101 6 sb010 1101 5 d82 bx01 6 b10 x101 10 d7 HzD 3 b101答 正确 bx01 6 b10 x101 10 d7 HzD 3 b101不正确4 b 1101 6 sb010 1101 5 d82 1010010 注意 关键字都是小写的 如reg是关键字 但REG不属于关键字 所以可用作普通标识符 2 4定义以下的变量和常数 1 定义一个名字为Q1的8位reg总线 reg 7 0 Q1 2 定义一个名字为asg的整数 integenasg 3 定义参数s1 3 b010 s2 3 b110 s3 3 b011 parameters1 3 b010 s2 3 b110 s3 3 b011 4 定义一个容量 深度 为128 字长为32位的存储器 存储器名是MEM32 reg 31 0 mem 127 0 MEM32 5 定义一个名字为WBUS的16位wire总线 wire 15 0 WBUS 2 5设 reg 3 0 A reg 7 0 B reg 15 0 C 1 执行赋值语句A 8B 11011010后 A实际获得赋值是多少 1010 2 执行赋值语句A 8H 3456后 A实际获得赋值是多少 6 0110 3 执行赋值语句C 9和C 9 C分别获得赋值是什么 什么类型 C 9 0000 0000 0000 1001 无符整数 C 9 1111 1111 1111 0111 有符整数 4 执行赋值语句B 38后 B获得赋值是什么 0010 0110 什么类型 无符整数 第3章 Verilog行为语句 3 1讨论always和initial异同点 答 Verilog支持两种过程语句 即always和initial语句 通常情况下initial语句不可综合 主要用于仿真程序中的初始化 always语句属于可综合语句 主要引导行为描述语句 使用频度非常高 在一个Verilog程序模块 module 中 always和initial语句被使用的次数没有限制 即它们本身属于并行执行特征的语句 过程语句的基本格式如下 always 敏感信号及敏感信号列表或表达式 包括块语句的各类行为语句Verilog的过程语句除always外 还有initial过程语句 其基本格式如下 initialbegin语句1 语句2 end与always结构不同 initial过程语句结构中没有敏感信号列表 即不带触发条件 initial过程中的块语句沿时间方向轴只执行一次 always总是可以自动执行无限次 initial语句通常用于仿真模块中对激励矢量的描述 或用于给寄存器变量赋初值 而在实际电路中 赋初值是没有意义的 因此这是面向模拟仿真的过程语句 通常不能被综合工具所接受 或在综合时被忽略 但却可以对存储器加载初始化文件 这是可综合行为 习题 3 2阻塞赋值和非阻塞赋值有何区别 在应用中应注意哪些问题 答 Verilog中 用普通等号 作为阻塞式赋值语句的赋值符号 如y b Verilog中 用普通等号 作为非阻塞式赋值语句的赋值符号 如y b 阻塞式赋值的特点是 一旦执行完当前的赋值语句 赋值目标变量y即刻获得来自等号右侧表达式的计算值 如果在一个块语句中含有多条阻塞式赋值语句 则当执行到其中某条赋值语句时 其他语句将禁止执行 即如同被阻塞了一样 非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作 非阻塞的含义可以理解为在执行当前语句时 对于块中的其他语句的执行情况一律不加限制 不加阻塞 这也可以理解为 在begin end块中的所有赋值语句都可以并行运行 3 3用Verilog设计一个3 8译码器 要求分别用case语句和if else语句 比较这两种方式 3 3用Verilog设计一个3 8译码器 要求分别用case语句和if else语句 比较这两种方式 moduledecoder3 8 G1 Y G2 A G3 inputG1 G2 G3 wireG1 G2 G3 input 2 0 A wire 2 0 A output 7 0 Y reg 7 0 Y regs always A G1 G2 G3 begins G2 G3 if G1 0 Y 8 b1111 1111 elseif s Y 8 b1111 1111 elsecase A 3 b000 Y 8 b11111110 3 b001 Y 8 b11111101 3 b010 Y 8 b11111011 3 b011 Y 8 b11110111 3 b100 Y 8 b11101111 3 b101 Y 8 b11011111 3 b110 Y 8 b10111111 3 b111 Y 8 b01111111 default Y 8 bxxxxxxxx endcaseendendmodule 3 3用Verilog设计一个3 8译码器 要求分别用case语句和if else语句 比较这两种方式 moduledecoder3 8 G1 Y G2 A G3 inputG1 G2 G3 wireG1 G2 G3 input 2 0 A wire 2 0 A output 7 0 Y reg 7 0 Y regs always A G1 G2 G3 begins G2 G3 if G1 0 Y 8 b1111 1111 elseif s Y 8 b1111 1111 elsebeginif A 3 b000 Y 8 b11111110 elseif A 3 b001 Y 8 b11111101 elseif A 3 b010 Y 8 b11111011 elseif A 3 b011 Y 8 b11110111 elseif A 3 b100 Y 8 b11101111 elseif A 3 b101 Y 8 b11011111 elseif A 3 b110 Y 8 b10111111 elseif A 3 b111 Y 8 b01111111 elseY 8 bxxxxxxxx endendendmodule 测试文件 部分请根据被测试的文件修改modulestimulus reg 2 0 A wire 7 0 Y regG1 G2 G3 decoder3 8DUT G1 Y G2 A G3 initialbegin monitor time A d G1 b G2 b G3 b Y d n A G1 G2 G3 Y end initialbeginG1 1 G2 1 G3 1 A 0 10G2 0 G1 0 10G2 0 G1 1 10G2 1 G1 0 G3 0 10G1 0 G1 1 G3 1 10G1 0 G1 0 G3 0 10G1 1 G2 0 G3 0 50A 0 50A 1 50A 2 50A 3 50A 4 50A 5 50A 6 50A 7 50 finish endendmodule 习题 3 4图3 26所示的是双2选1多路选择器构成的电路MUXK 对于其中MUX21A 当s 0和s 1时 分别有y a和y b 试在一个模块结构中用两个过程来表达此电路 答 参考实验1 图3 26含2选1多路选择器的模块 moduleMUXK a1 a2 a3 s0 s1 outy inputa1 a2 a3 s0 s1 outputouty wireouty wiretmp mux21au1 a a2 b a3 s s0 y tmp mux21au2 a a1 b tmp s s1 y outy endmodule 习题 3 5给出一个4选1多路选择器的Verilog描述 选通控制端有4个输入 S0 S1 S2 S3 当且仅当S0 0时 Y A S1 0时 Y B S2 0时 Y C S3 0时 Y D moduleMUX41a A B C D S0 S1 S2 S3 Y outputY 定义Y为输出信号inputA B C D inputS0 S1 S2 S3 regY 定义输出端口信号Y为寄存器型变量always A B C S0 S1 S2 S3 begin 块语句起始if S0 0 Y A 当S0 0成立 即 S0 0 1时 Y A elseif S1 0 Y B 当 S1 1 为真 则Y B elseif S2 0 Y C 当 S2 2 为真 则Y C elseif S3 0 Y D 当 S3 3 为真 即Y D end 块语句结束endmodule 3 6利用if语句设计一个全加器 sum 0 cout 1 endelseif ain 0endendendmodule timescale1ns 1psmodulef adder ain bin cin cout sum inputain bin cin wireain bin cin outputcout sum regcout sum always ainorbinorcin beginif ain 0endelseif ain 1 bin 1 cin 0 begin 真值表为 3 6利用if语句设计一个全加器 timescale1ns 1psmodulef adder ain bin cin cout sum inputain bin cin wireain bin cin outputcout sum regcout sum always ainorbinorcin beginif ain 0endendendmodule 习题 3 7设计一个求补码的程序 输入数据是一个有符号的8位二进制数 设计一个求补码的程序 输入数据是一个有符号的8位二进制数moduleBinary complement a b 二进制数补码input 7 0 a output 7 0 b integeri reg 7 0 d reg 6 0 c always a beginif a 7 1 beginfor i 0 i 7 i i 1 c i a i d 7 0 a 7 c 6 0 7 d1 endelsed 7 0 a 7 0 endassignb 7 0 d 7 0 endmodule timescale1ns 1ns include Binary complement v modulestimulus 测试模块的名字reg 7 0 a wire 7 0 b Binary complementmycount a b 调用测试对象initialbegin 激励信号定义a 1 10a 2 10a 8 d8 10a 127 10a 255 10 finish end 定义结果显示格式initial monitor time a b b b n a b endmodule 3 7设计一个求补码的程序 输入数据是一个有符号的8位二进制数 3 8设计一个格雷码至二进制数的转换器 在一组数的编码中 若任意两个相邻的代码只有一位二进制数不同 则称这种编码为格雷码 GrayCode 另外由于最大数与最小数之间也仅一位数不同 即 首尾相连 因此又称循环码或反射码 格雷码转二进制码格雷码转换为二进制码 从左边第二位起 将每一位与左边一位解码后的值 异或 作为该解码后的值 最左边的一位依然不变 3 8设计一个格雷码至二进制数的转换器 modulegry2bin Gry Bin parameterlength 3 output length 1 0 Bin input length 1 0 Gry reg length 1 0 Bin integeri always Gry beginBin length 1 Gry length 1 for i length 2 i 0 i i 1 Bin i Bin i 1 Gry i endendmodule timescale1ns 1ns include gry2bin v modulestimulus reg 2 0 Gry wire 2 0 Bin gry2binmycount Gry Bin initialbeginGry 3 b000 10Gry 3 b001 10Gry 3 b011 10Gry 3 b010 10Gry 3 b110 10Gry 3 b111 10Gry 3 b101 10Gry 3 b100 10 finish endinitial monitor time Gry b Bin b n Gry Bin endmodule 习题 3 9用不同循环语句分别设计一个逻辑电路模块 用以统计一8位二进制数中含1的数量 moduleStatistics8 sum A output 3 0 sum input 7 0 A reg 3 0 sum integeri always A beginsum 0 for i 0 i 8 i i 1 for语句if A i sum sum 1 elsesum sum endendmodule moduleStatistics8 sum A parameterS 4 output 3 0 sum input 7 0 A reg 3 0 sum reg 2 S 1 TA integeri always A beginTA A sum 0 repeat 2 S beginif TA 1 sum sum 1 TA TA 1 endendendmodule repeat循环语句 for循环语句 moduleStatistics8 sum A parameterS 8 output 3 0 sum input 7 0 A reg S 1 AT reg 3 0 sum reg S 0 CT always A beginAT S 1 b0 A sum 0 CT S while CT 0 beginif AT 1 sum sum 1 elsesum sum beginCT CT 1 AT AT 1 endendendendmodule 3 9用不同循环语句分别设计一个逻辑电路模块 用以统计一8位二进制数中含1的数量 while循环语句 modulevoter7 pass vote outputpass input 6 0 vote reg 2 0 sum integeri regpass always vote beginsum 0 for i 0 i 6 i i 1 for语句if vote i sum sum 1 if sum 2 pass 1 若超过4人赞成 则pass 1elsepass 0 endendmodule 习题 3 10用循环语句设计一个7人投票表决器 习题 3 11Verilog设计一个4位4输入最大数值检测电路 Verilog设计一个4位4输入最大数值检测电路moduleMaximum value detection Mostlarge a b c d 4位4输入最大数值检测电路output 3 0 Mostlarge input 3 0 a b c d wire 3 0 sum1 sum2 sum3 assignsum1 a b a b assignsum2 c d c d assignMostlarge sum1 sum2 sum1 sum2 endmodule 3 12利用case语句设计一个加 减 乘 除4功能算术逻辑单元ALU 输入的两个操用数都是4位进制数 输入的操作码是两位二进制数 输出结果是8位二进制数 为了便于记忆和调试 建议把操作码用parameter定义为参数 moduleMUX ALU A B S Y output 7 0 Y 定义Y为输出信号input 3 0 A B input 1 0 S parameteradd 2 b00 reduce 2 b01 multiply 2 b10 Trad 2 b11 reg 7 0 Y 定义输出端口信号Y为寄存器型变量always A B S begincase S 2 b00 Y A B 2 b01 Y A B 2 b10 Y A B 2 b11 Y A B default Y 8 bxxxxxxxx endcaseendendmodule modulestimulus reg 3 0 A B reg 1 0 S wire 7 0 Y MUX ALUr1 A B S Y initialbeginA 4 b0100 B 4 b0010 S 2 b00 10S 2 b01 10S 2 b10 10S 2 b11 10 finish end initial monitor time S b A b B b Y d S A B Y endmodule 3 12利用case语句设计一个加 减 乘 除4功能算术逻辑单元ALU 输入的两个操用数都是4位进制数 输入的操作码是两位二进制数 输出结果是8位二进制数 为了便于记忆和调试 建议把操作码用parameter定义为参数 习题 3 13在Verilog设计中 给时序电路清零 复位 有两种不同方法 它们是什么 如何实现 答 同步清零 异步清零 在过程语句敏感信号表中的逻辑表述posedgeCLK用于指明正向跳变 或negedge用于指明负向跳变实现 3 14哪一种复位方法必须将复位信号放在敏感信号表中 给出这两种电路的Verilog描述 答 异步复位必须将复位信号放在敏感信号表中 同步清零 always posedgeCLK CLK上升沿启动Q D 当CLK有升沿时D被锁入Q异步清零 always posedgeCLKornegedgeRST begin 块开始if RST Q 0 如果RST 0条件成立 Q被清0elseif EN Q D 在CLK上升沿处 EN 1 则执行赋值语句end 块结束 3 15举例说明 为什么使用条件叙述不完整的条件句能导致产生时序模块的综合结果 答 当CLK发生了电平变化 但是从1变到0 这时无论D是否变化 都将启动过程去执行if语句 但此时CLK 0 无法执行if语句 从而无法执行赋值语句Q D 于是Q只能保持原值不变 这就意味着需要在设计模块中引入存储元件 当CLK没有发生任何变化 且CLK一直为0 而敏感信号D发生了变化 这时也能启动过程 但由于CLK 0 无法执行if语句 从而也就无法执行赋值语句Q D 导致Q只能保持原值 这也意味着需要在设计模块中引入存储元件 在以上两种情况中 由于if语句不满足条件 于是将跳过赋值表达式Q D 不执行此赋值表达式而结束if语句和过程 对于这种语言现象 Velilog综合器解释为 对于不满足条件 跳过赋值语句Q D不予执行 即意味着保持Q的原值不变 保持前一次满足if条件时Q被更新的值 对于数字电路来说 当输入改变后试图保持一个值不变 就意味着使用具有存储功能的元件 就是必须引进时序元件来保存Q中的原值 直到满足if语句的判断条件后才能更新Q中的值 于是便产生了时序元件 moduleLATCH1 CLK D Q outputQ inputCLK D regQ always DorCLK if CLK Q D 当CLK 1时D被锁入Qendmodule 3 16把例3 11中的RST和CLK在敏感信号中具有同样的地位 从语句上解答 为什么综合的结果是CLK成为边沿触发时钟信号 而RST成为电平控制信号 moduleDFF2 CLK D Q RST EN 含异步清0和时钟同步使能的D触发器outputQ inputCLK D RST EN regQ always posedgeCLKornegedgeRST begin 块开始if RST Q 0 如果RST 0条件成立 Q被清0elseif EN Q D 在CLK上升沿处 EN 1 则执行赋值语句end 块结束endmodule 例3 11 这里所谓的 异步 并非时序的异步 而是指独立于时钟控制的复位控制端 即在任何时刻 只要RST 0或1 时钟异步 此D触发器的输出端即刻被清0 与时钟的状态无关 而时钟使能EN的功能是 只有当ED 1时 时钟上升沿才有效 时钟同步 例3 11程序执行过程是这样的 无论CLK是否有跳变 只要RST有一个下降沿动作 即刻启动过程执行if语句 即执行语句Q 0 对Q清0 然后跳出if语句 此后如果RST一直保存为0 则无论是否有CLK的边沿跳变信号 Q恒输出0 这就是RST的异步清0功能 如果RST一直为1 且CLK有一次上升沿 则必定执行赋值操作Q D 从而更新Q值 否则将保持Q值不变 条件是RST 1 always posedgeCLKornegedgeRST begin 块开始if RST Q 0 如果RST 0条件成立 Q被清0elseif EN Q D 3 17把例3 17改成一异步清0 同步时钟使能和异步数据加载型8位二进制加法计数器 例3 17 含有异步清0同步时钟使能和同步数据加载功能的十进制计数器moduleCNT10 CLK RST EN LOAD COUT DOUT DATA inputCLK RST EN LOAD 时钟 时钟使能 复位 数据加载控制信号输入口input 3 0 DATA 4位并行加载数据输入口output 3 0 DOUT 计数数据输出信号口outputCOUT 计数进位输出regCOUT reg 3 0 Q1 assignDOUT Q1 将内部寄存器的计数结果输出至DOUTalways posedgeCLKornegedgeRSTornegedgeLOAD 时序过程beginif RST Q1 0 RST 0时 对内部寄存器单元异步清0elseif LOAD Q1 DATA 当LOAD 0 异步向内部寄存器加载数据elseif EN begin 同步使能EN 1 则允许加载或计数if Q1 9 Q1 Q1 1 当Q1小于9时 允许累加elseQ1 4 b0000 否则一个时钟后清0返回初值endendalways Q1 组合电路之过程if Q1 4 h9 COUT 1 b1 当Q1 1001时 COUT输出进位标志1elseCOUT 1 b0 否则 输出进位标志0endmodule 3 18把例3 17改成一个16位二进制加法计数器 将其进位输出COUT与异步数据加载控制LOAD连在一起 构成一个自动加载型16位二进制加法计数器 也即一个16位可控的分频器 给出其Verilog表述 并说明工作原理 设输入频率fi 4MHz 输出频率fo 516 5 Hz 允许误差 0 1Hz 16位加载数值 moduleCNT10 CLK RST EN LOAD COUT DOUT DATA inputCLK RST EN LOAD 时钟 时钟使能 复位 数据加载控制信号输入口input 15 0 DATA 4位并行加载数据输入口output 15 0 DOUT 计数数据输出信号口outputCOUT 计数进位输出reg 15 0 Q1 regCOUT assignDOUT Q1 将内部寄存器的计数结果输出至DOUTalways posedgeCLKornegedgeRST begin 时序过程if RST Q1 0 RST 0时 对内部寄存器单元异步清0elseif EN begin 同步使能EN 1 则允许加载或计数if LOAD Q1 DATA 当LOAD 1 向内部寄存器加载数据elseif Q1 16 hFFFF Q1 Q1 1 当Q1小于9时 允许累加elseQ1 16 h0000 否则一个时钟后清0返回初值endendalways Q1 组合电路之过程if Q1 16 hFFFF COUT 1 b1 当Q1 1001时 COUT输出进位标志1elseCOUT 1 b0 否则 输出进位标志0endmodule 例3 17 含有异步清0同步时钟使能和同步数据加载功能的十进制计数 FFFF 7744 E1BF moduleCNT10 CLK RST EN COUT DOUT LOAD LOAD DATAinputCLK RST EN 时钟 时钟使能 复位 数据加载控制信号输入口 input 3 0 DATA 4位并行加载数据输入口output 3 0 DOUT 计数数据输出信号口outputCOUT 计数进位输出regCOUT reg 3 0 Q1 parameterDATA 5 assignDOUT Q1 将内部寄存器的计数结果输出至DOUTassignLOAD COUT always posed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 虚拟现实VR增强现实AR应用落地方案
- 企业员工管理系统方案
- 排水泵站运行与管理方案
- 无损检测的未来趋势超声-UT-中级工作策略探讨
- 新品上市营销推广方案模板
- 企业运营成本管理方案
- 企业财税合规与风险防范税务筹划实战指南-AccountingTax
- 2026年GNF的品牌资质分析报告
- 如何快速融入ESG行业的初级培训课程
- 2026年中国干油泵行业市场前景预测及投资价值评估分析报告
- 2025年青海省公务员申论考试真题试卷(含答案)
- 文旅产业知识培训课件
- 浙江省浙南名校联盟2025-2026学年高三上学期10月联考英语试题
- 2026届新高考英语冲刺热点复习 2025年新高考1卷阅读理解D篇说题
- 协助患者更衣课件
- 新能源公交安全培训内容课件
- 企业人力资源数字化管理平台方案
- 2025年广东铁投集团校园招聘笔试参考题库附带答案详解
- 工作快乐生活演讲稿
- 建筑施工安全检查评分表(完整自动计算版)
- 自动喷水灭火系统施工验收规范与条文详细解读
评论
0/150
提交评论