数字系统设计与verilog_HDL_王金明_第四版__EDA期末知识点复习(宁波工程学院电科版)

合集下载

数字系统设计与veriloghdl课后答案

数字系统设计与veriloghdl课后答案

数字系统设计与veriloghdl课后答案【篇一:数字逻辑与数字系统设计习题参考答案】>第1章习题解答1.3 (1)86(2)219(3)106.25(4)0.6875 (4)0.1011.4 (1)101111(2)1001000(3)100001l.111.5 (1)(117)10=(165)8=(1110101)2=(75)16(2)(3452)10=(6574)8=(110101111100)2=(d7c)16(3)(23768.6875)10=(56330.54)8=(101110011011000.1011)2=(5cd 8.b)16 (4)(0.625)10=(0.5)8=(0.101)2=(0.a)16 1.6(1)(117)8=(1001111)2=(79)10(2)(7456)8=(111100101110)2=(3886)10(3)(23765.64)8=(10 0111 1111 0101.1101)2=(10229.8125)10(4)(0.746)8=(0.11111)2=(0.96875)10 1.7 (1)(9a)16=(10011010)2=(154)10(2) (3cf6)16=(11110011110110)2=(15606)10(3) (7ffe.6)16=(111111*********.011)2=(32766.375)10 (4)(0.c4)16=(0.110001)2=(0.765625)10 1-8(1)(125)10=(000100100101)8421bcd(2)(7342)10=(0111001101000010)8421bcd(3)(2018.49)10=(0010000000011000.01001001)8421bcd(4)(0.785)10=(0.011110000101)8421bcd1.9(1)(106)10=(1101010)2 原码=反码=补码=01101010 (2)(-98)10=(-1100010)2原码=11100010反码=10011101 补码=11100011(3)(-123)10=(-1111011)2 原码=11111011反码=10000101 补码=11111011(4)(-0.8125)10=(-0.1101)2 原码=1.1101000反码=1.0010111 补码=1.00110001.10(1)(104)10=(1101000)2 [1101000]补=01101000(-97)10=(-1100001)2 [-1100001]补=1001111101101000 + 10011111 0000011110000011 + 01001111 11010010[104-97]补=01101000+10011111=00000111, 104-97=(00000111)2=7 (2) (-125)10=(-1111101)2(79)10=(01001111)2[-1111101]补=10000011 [01001111]补=0100111101111000 [-125+79]补=10000011+01001111=11010010,-125+79=(-0101110)2=-46 (3) (120)10=(1111000)2[01111000]补=01111000(-67)10=(-1000011)2[-1000011]补=10111101[120-67]补=10000011+01001111=00110101,-125+79=(00110101)2=53 (4) (-87)10=(-1010111)2[-1010111]补=10101001(12)10=(1100)2[1100]补=00001100[-87+12]补=10101001+00001100=10110101,-125+79=(-1001011)2=-75+ 10111101 0011010110101001+ 00001100 10110101第2章习题解答2.3 解:根据逻辑图可直接写出逻辑表达式:(a) f=ab?bc;(b)f=abbcac解:设3个输入变量分别为a、b、c,输出为f,按题意,其中有奇数个为1,则输出f=1,因此可写出其逻辑表达式为f=abc?abc?abc?abc。

数字系统设计与Verilog_HDL(第4版)[王金明]第1章

数字系统设计与Verilog_HDL(第4版)[王金明]第1章
称为下载。
通常将对基于EEPROM工艺的非易失结构PLD器件
的下载称为编程(Program),将基于SRAM工艺
结构的PLD器件的下载称为配置(Configure)。
1.4 常用的EDA软件工具 集成的 FPGA/CPLD开发工具 逻辑综合器 仿真工具 其他设计工具
集成的FPGA/CPLD开发工具
的逻辑小块放到器件内部逻辑资源的具体位置,并使
它们易于连线;布线则是利用器件的布线资源完成各
功能块之间和反馈信号之间的连接。
仿真(Simulation)
仿真是对所设计电路的功能的验证 功能仿真(Function Simulation) 时序仿真(Timing Simulation)
编程配置
把适配后生成的编程文件装入到PLD器件中的过程
EDA(Electronic Design Automation) 就是以计算机为工作平台,以EDA软件工具为开 发环境,以PLD器件或者ASIC专用集成电路为目 标器件设计实现电路系统的一种技术。 1.电子CAD(Computer Aided Design)
2.电子CAE(Computer Aided Engineering)
综合器是能自动实现上述转换的软件工具,是能将原理图
或HDL语言描述的电路功能转化为具体电路网表的工具
软件编译器和硬件综合器区别
C、ASM... 程序 软件程序编译器
COMPILER
(a)软件语言设计目标流程 硬件描述语言 综合器
CPU指令/数据代码: 010010 100010 1100
VHDL/VERILOG. 程序
现代EDA技术的特征
(1)采用硬件描述语言(HDL)进行设计 (2)逻辑综合与优化 (3)开放性和标准化 (4)更完备的库(Library)

数字系统设计verilog HDL 第 版 王金明

数字系统设计verilog HDL 第 版 王金明

第3章 Quartus Prime使用指南3.1 Quartus Prime原理图设计n3.1.1 半加器原理图设计输入Quartus Prime的主界面Quartus Prime的主界面3.1.1 半加器原理图设计输入输入元件Quartus Prime的主界面3.1.1 半加器原理图设计输入半加器电路图Quartus Prime的主界面3.1.1 半加器原理图设计输入使用New Project Wizard创建工程Quartus Prime的主界面3.1.1 半加器原理图设计输入设置Directory,Name,Top-Level Entity对话框Quartus Prime的主界面3.1.1 半加器原理图设计输入将设计文件加入当前工程中Quartus Prime的主界面3.1.1 半加器原理图设计输入选择目标器件Quartus Prime的主界面3.1.1 半加器原理图设计输入选择综合器、仿真器Quartus Prime的主界面3.1.1 半加器原理图设计输入工程信息汇总显示Quartus Prime的主界面3.1.2 1位全加器设计输入Quartus Prime的主界面创建元件符号对话框3.1.2 1位全加器设计输入Quartus Prime的主界面1位全加器原理图3.1.3 1位全加器的编译n选择菜单Processing→Start Compilation,或者单击按钮,即启动了完全编译,完全编译包括如下5个过程:n分析与综合(Analysis & Synthesis);n适配(Fitter);n装配(Assembler);n定时分析(TimeQuest Timing Analysis);n网表文件提取(EDA Netlist Writer)。

Quartus Prime的主界面3.1.3 1位全加器的编译Quartus Prime的主界面编译信息汇总3.1.4 1位全加器的仿真Quartus Prime的主界面建立Quartus Prime和Modelsim的链接3.1.4 1位全加器的仿真Quartus Prime的主界面设置仿真文件的格式和目录3.1.4 1位全加器的仿真Quartus Prime的主界面自动生成的Test Bench模板文件3.1.4 1位全加器的仿真Quartus Prime的主界面对Test Bench进一步设置3.1.4 1位全加器的仿真1位全加器时序仿真波形图Quartus Prime的主界面3.1.5 1位全加器的下载n本例针对的下载板为DE2-115,故目标器件应为:EP4CE115F29C7。

数字系统设计复习纲要

数字系统设计复习纲要

EDA工具应用丛书数字系统设计与Verilog HDL(第4版)王金明编著课堂笔记海盗整理目前,EDA技术已经成为电子信息类学生一门重要的专业基础课程,并在教学、科研,以及大学生电子设计竞赛等活动中,起着越来越重要的作用,成为电子信息类本科生以及研究生必须掌握的基础知识与基础技能。

随着EDA技术的应用日益广泛,对EDA课程的教学的要求也不断提高,必须对教学内容进行优化与更新,以与EDA技术的发展相适应。

对于大多数学生而言,通过一学期的学习已经对EDA技术有了一定的了解,为了帮助同学们系统的掌握所学内容,我整理了《数字系统设计与Verilog HDL 课堂笔记》一书。

在本书中,共有五个章节,主要列举了数字系统设计概论、可编程逻辑器件、Verilog HDL语言、Quartus II的安装与使用的相关知识点,简明扼要直击考试要点。

在本书的第五章节,通过六个例子阐述了Verilog HDL语言与Quartus II软件的配合使用。

由于受编者水平和编写时间所限,书中难免有不足之处,恳请读者批评指正。

编者2014.5.171.数字系统设计概论 (5)1.1数字系统的概念 (5)1.2数字系统的发展 (5)1.2.1 EDA技术: EDA(Electronic Design Automation) (5)1.2.2数字系统的两种设计思路: (5)1.2.3 构建数字系统的方法途径 (6)1.2.4 基于IP模块的设计 (6)1.3 数字系统的设计流程 (7)1.4 用于开发FPGA和CPLD的EDA工具 (7)2.可编程逻辑器件PLD (8)2.1 PLD概述 (8)2.1.1 PLD的基本概念 (8)2.1.2 PLD的作用 (8)2.1.3 PLD的分类 (8)2.1.4 PLD的基本构成原理与表示方法 (9)2.2 SPLD介绍 (10)2.2.1 可编程只读存储器(PROM) (10)2.2.2可编程逻辑阵列PLA(Programmable Logic Array) (10)2.2.3可编程阵列逻辑PAL(Programmable Array Logic) (10)2.2.4通用阵列逻辑(GAL) (12)2.3 HPLD介绍 (12)2.3.1 CPLD (Complex Programmable Logic Device,复杂可编程逻辑器件) (12)2.3.2 FPGA(Field Programmable Gate Array,现场可编程门阵列) (13)2.3.3 CPLD与FPGA的异同 (13)2.3.4 Altera 公司生产的PLD器件 (14)2.3.5 PLD器件的发展趋势 (14)3. Verilog HDL 语言 (14)3.1 Verilog HDL 基础 (14)3.1.1 词法 (14)3.1.2 数据类型 (15)3.1.3运算符 (16)3.2 Verilog HDL中的模块 (16)3.2.1 模块 (16)3.2.2 Verilog HDL 数字设计中模块中功能的基本描述方式 (17)3.3 Verilog HDl 行为语句 (17)3.3.1 过程语句 (17)3.3.2 块语句 (18)3.3.3 赋值语句 (18)3.3.4 条件语句 (18)3.3.5 循环语句 (19)3.3.6 编译向导语句 (20)3.4 Verilog HDL 数字设计的层次设计风格 (20)3.5常见组合与时序逻辑电路Verilog HDL描述 (20)3.5.1 常用组合电路模块的设计 (20)3.5.2 常用时序电路模块设计 (21)4. Quartus II 介绍 (21)4.1 Quartus II 概述 (21)4.2 原理图输入法 (22)4.3 文本输入方式 (23)4.4 设计流程 (23)5. 数字系统设计实验 (24)5.1 基础实验 (24)5.1.1 加法器 (24)5.1.2 译码器 (25)5.1.3 触发器 (26)5.1.4 计数器 (28)5.2 综合设计实验 (29)5.2.1 累加器 (29)5.2.2 数码管动态扫描 (30)1.数字系统设计概论1.1数字系统的概念是指对数字信息进行存储、传输、处理的电子系统。

VerilogHDL复习题与答案

VerilogHDL复习题与答案

VerilogHDL硬件描述语言复习一、1. Verilog HDL 是在哪一年首次被I E E E标准化的答:Verilog HDL是在1995年首次被IEEE标准化的..2. Verilog HDL支持哪三种基本描述方式答:Verilog HDL可采用三种不同方式或混合方式对设计建模..这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模3. Verilog HDL 是由哪个公司最先开发的答:Verilog HDL是由Gateway Design Automation公司最先开发的4. Verilog HDL中的两类主要数据类型什么答:线网数据类型和寄存器数据类型..线网类型表示构件间的物理连线; 而寄存器类型表示抽象的数据存储元件..5. U D P代表什么答:UDP代表用户定义原语6. 写出两个开关级基本门的名称..答:pmos nmos7.写出两个基本逻辑门的名称..答:and or8.在数据流描述方式中使用什么语句描述一个设计答:设计的数据流行为使用连续赋值语句进行描述9. 采用结构描述方式描述1位全加器..答:module full_adda;b;cin;s;co;input a;b;cin;output s;co;wire S1;T1;T2;T3;xorX1S1;a;b;X2s;S1;cin;andA1T3;a;b;A2T2;b;cin;A3T1;a;cin;orO1co;T1;T2;T3;endmodule10. i n i t i a l语句与always 语句的关键区别是什么答: 1 initial语句:此语句只执行一次..2 always语句:此语句总是循环执行; 或者说此语句重复执行..11.采用数据流方式描述2 - 4译码器..答:'timescale 1ns/nsmodule Decoder2×4A;B;EN;Z;input A;B;EN;output 0:3Z;wire abar;Bbar;assign #1 Abar=~A;assign #1 Bbar=~B;assign #2 Z0=~Abar&Bbar&EN;assign #2 Z1=~Abar&B&EN;assign #2 Z2=~A&Bbar&EN;assign #2 Z3=~A&B&EN;endmodule1 2. 找出下面连续赋值语句的错误..assign Reset=#2 Sel^WriteBus;答:不符合连续赋值语句的语法;应该为:assign #2 Reset = ^ WriteBus;二、1. 下列标识符哪些合法;哪些非法C O u n T; 1_2 M a n y; \**1; R e a l ; \wait; Initial答:COunT合法;1_2 Many非法;\**1;Real 非法;\wait合法;Initial合法2. 在Verilog HDL中是否有布尔类型答:没有3. 如果线网类型变量说明后未赋值;其缺省值为多少答:z4. Verilog HDL 允许没有显式说明的线网类型..如果是这样;怎样决定线网类型答:在Verilog HDL 中;有可能不必声明某种线网类型..在这样的情况下;缺省线网类型为1位线网..5.下面的说明错在哪里i n t e g e r 0:3 R i p p l e;答:应该是integer Ripple 0:36. Verilog HDL有哪几大类数据类型答:verilog hdl 有两大类数据类型:线网类型和寄存器类型..7.Verilog HDL有哪几种寄存器类型答:有五种不同的寄存器类型:reg、integer、time、real、realtime..三、1. 假定长度为6 4个字的存储器; 每个字8位;编写Verilog 代码;按逆序交换存储器的内容..即将第0个字与第6 3个字交换;第1个字与第6 2个字交换;依此类推..答:reg 7:0 mem 63:0;integer i = 0;reg 7:0 temp;whilei < 32begintemp = memi;memi = mem63 - i;mem63 - i = temp;i = i + 1;end2. 假定3 2位总线A d d re s s _ B u s; 编写一个表达式;计算从第11位到第2 0位的归约与非.. 答:~& addressBus20:113. 假定一条总线C o n t ro l _ B u s 1 5 : 0 ;编写赋值语句将总线分为两条总线:A b u s 0 : 9 和B b u s 6 : 1 ..答:Abus = ControlBus9:0;Bbus = ControlBus15:10;4. 编写一个表达式;执行算术移位;将Qparity 中包含的8位有符号数算术移位..答:{Qparity7-i:0; Qparity7:8-i}//左移;i表示移的位数{Qparityi-1:0; Qparity7: i}//右移;i表示移的位数5.使用条件操作符; 编写赋值语句选择N e x t S t a t e的值..如果C u rre n t S t a t e的值为R E S E T; 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O;则N e x t S t a t e 的值为B U S Y;如果C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T..答:NextState = CurrentState == RESET Go : CurrentState == Go BUSY : RESET6. 如何从标量变量A;B;C和D中产生总线B u s Q0:3 如何从两条总线B u s A 0 : 3 和B u s Y 2 0 : 1 5 形成新的总线B u s R 1 0 : 1答:BusQ3:0 = {D; C; B; A}BusR10:1 = {BusY20:15; BusA3:0}四、1、Verilig HDL提供的内置基本门分为哪几类1 多输入门、2 多输出门、3 三态门2、多输入门与多输出门的区别在哪里答:多输入门:and nand nor or xor xnor 这些逻辑门只有单个输出; 1个或多个输入第一个端口是输出;其它端口是输入..多输出门有:buf; not 这些门都只有单个输入;一个或多个输出最后的端口是输入端口;其余的所有端口为输出端口..3、Verilog HDL内置的mos开关门有哪些答:cmos; nmos; pmos; rcmos; rnmos; rpmos4、门时延值的组成有哪几个值答:1 上升时延2 下降时延3 关断时延5. Verilig HDL提供的内置基本门分为哪几类答:1 多输入门2 多输出门 3 三态门4 上拉、下拉电阻5 MOS开关6 双向开关6.假定一条总线Control_Bus7:0;编写赋值语句将总线分为两条总线:Abus 0:2和Bbus 4 : 1 ..答:Abus=ControlBus2:0;Bbus=ControlBus15:12;7. 编写一个表达式;执行算术移位;将Qparity 中包含的8位有符号数算术左移3位..答:{Qparity4:0; Qparity7:5}8.要求采用数据流方式设计一个半加器;写出完整的Verilig HDL设计模块..答:module half_addSum; Cout;A; B;input A; B;output Sum; Cout;assign Sum=A^B;assign Cout=A&B;endmodule五、1、操作符有按操作数个数分为3 种类型;其中三目操作符有 2 个操作符和 3 个操作数..2、关键字全是小写;标识符的首字符必须是字母或下划线..3、数字A=5’b011 的表示z ..设B=5’b101x1;C=5’b01x11;则操作运算F=B+C的结果F= 5'bxxxxx ..4、VerilogHDL中保存字符串“Hello”需要 5 位..5、声明reg 7:0data4:0表示5 个8 位的存储单元..6、module testq;clk;crt;output q;reg q;Input clk;crt;always @posedge clkbeginifcrt==1q=~q;endendmodule7、数据流建模的主要语法结构是assign LHS_target = RHS_expression; 语句;采用assign 关键字开始..8、线网赋值延迟可以通过普通赋值延迟; 隐式连续赋值延迟和线网声明延迟三种方法来实现..9、模型引用时;要指定实例名;但硬件和用户定义原语例外..10、语句assign #2:3:4;5:6:7portout;clk;in中的典型关断延迟是 4 ;最大关断延时是7 ..11、VerilogHDL语言可以从四个不同的抽象层次描述电路;这四层是开关级、门级、寄存器传送级、算法级12、结构化建模的主要语句是内置门原语和用户定义原语..六、1.门级建模的类型有:Aor和AND BOR和andCand和or DA、B、C都正确 C2.VerilogHDL使用的是逻辑是:A二值逻辑B四值逻辑C三值逻辑D八种强度 B3.不属于寄存器类型的是:Ainteger BregCwand Dtime C4.VerilogHDL语言中;标识符的作用范围是:A本模块B外部模块C所有模块D全局模块 A5.具有多个输出端口的门是:Aand BorCnor Dnot D七、1、语句内部时延与语句前时延效果是否一样答:不一样2、当时延表达式为负数时;时延值是如何处理得到答:取绝对值3、VeriligHDL有几种循环语句分别采用关键字是什么答:总共有四种循环语句;分别采用forever、repeat、while、for..八、1.VerilogHDL语言和C语言的结构化语句有何不同答:1.Verilog HDL是在C语言的基础上发展起来的;保留了C语言的结构特点..2.C语言由函数组成;Verilog由模块module组成3.C语言通过函数名及其端口变量实现调用;Verilog也通过模块名和端口变量实现调用4.C语言有主函数main;Verilog的个module均等价;但必有一个顶层模块;包含芯片系统与外界的所有I/O信号5.C语言是顺序执行;而Verilog的所有module均并发执行6.C 语言与Verilog语法相似..2、VerilogHDL语言的操作符类型有哪些其数据流建模采用什么来描述设计吗答:算术、逻辑、关系、等价、按位、缩减、移位、拼接、条件数据流建模采用算术与逻辑来描述设计3、VerilogHDL语言的优点是什么答:Verilog HDL语言的优势:由于它在其门级描述的底层;也就是晶体管开关的描述方面比VHDL等各种其它的HDL语言有更强的功能..所以在复杂数字逻辑电路和系统的设计仿真时更有优势;描述的设计思想、电路结构和逻辑关系清晰明了;并且设计语言简练、易学易用;其模块化分层结构在大规模设计时更能体现出优势..因此可以看出;Verilog HDL语言在EDA设计中相对与其他的各种硬件描述语言更有优势..4、下列例子中;b;c;d的最终值分别是什么initialbeginb=1’b1;c=1’b0;#10 b=1’b0;endinitialbegind=#25{b|c};end答:b=1'b0、c=1'b0、d=1'b05.一位全减器模块wsub具有三个一位输入:x;y和z前面的借位;两个一位的输出D差和B借位..计算D和B的逻辑等式如下所示:..D..yx=++..+..xyzzzxyyzx..+=B.+yzyzxx写出VerilogHDL数据流描述的该全减器wsub..答: module wsubD;B;x;y;xinput x;y;z;output D;B;assign D=~x*~y*~z+~x*y*~z+x*~y*~Z+x*y*z;assign B=~x*y+~x*z+y*z;endmodule。

Verilog-HDL期末考试复习题

Verilog-HDL期末考试复习题

【第一章】1、FPGA 芯片的发展主要体现在哪几个方面?未来的发展趋势是什么?答:新型芯片的规模越来越大,成本越来越低,低端的FPGA已逐步取代了传统的数字元件.先进的ASIC生产工艺已经被用于FPGA的生产,越来越丰富的处理器内核被嵌入到高端的FPGA芯片中,基于FPGA的开发成为一项系统级设计工程。

随着半导体制造工艺的不同提高,FPGA的集成度将不断提高,制造成本将不断降低,其作为替代ASIC来实现电子系统的前景将日趋光明。

2、EDA 技术的优势是什么?答:1.用HDL对数字系统进行抽象的行为与功能描述以及具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。

2.EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持。

3.某些HDL也是文档型的语言,极大地简化了设计文档的管理。

4。

EDA具有日益强大的逻辑设计仿真测试技术,极大地提高了大规模系统电子设计的自动化程度。

5。

基于EDA技术的设计,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权。

6。

EDA技术的设计语言是标准化的,不会由于设计对象的不同而改变;它的开发工具是规范化的,EDA软件平台支持任何标准化的设计语言;它的设计成果是通用性的,IP核具有规范的接口协议。

良好的可移植与可测试性,为系统开发提供了可靠的保证。

7.EDA技术能将所有设计环节纳入统一的自顶向下的设计方案中。

8。

EDA不但在整个设计流程上充分利用计算机的自动设计能力,在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整全面的测试。

3、EDA 的设计流程包括哪几个环节?ANS: ①设计输入(原理图/HDL 文本编辑) ②综合③FPGA/CPLD 适配④时序仿真与功能门级仿真⑤FPGA/CPLD 编程下载⑥FPGA/CPLD 器件电路硬件检测。

EDA-Verilog,HDL期末复习题总结必过

EDA-Verilog,HDL期末复习题总结必过

EDA-Verilog,HDL期末复习题总结必过EDA-Verilog HDL期末复习题总结必过选择题1. 大规模可编程器件主要有FPGA、CPLD 两类,下列对FPGA 结构与工作原理的描述中,正确的是( C )。

A.FPGA 全称为复杂可编程逻辑器件;B.FPGA 是基于乘积项结构的可编程逻辑器件;C.基于SRAM 的FPGA 器件,在每次上电后必须进行一次配置;D.在Altera 公司生产的器件中,__ 系列属FPGA 结构。

2. 不完整的IF语句,其综合结果可实现(A )A. 时序逻辑电路B.组合逻辑电C. 双向电路D. 三态控制电路 3. 综合是EDA设计流程的关键步骤,在下面对综合的描述中,( D )是错误的。

A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;B.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;D.综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。

4. 大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA 结构与工作原理的描述中,正确的是( C )。

A. FPGA全称为复杂可编程逻辑器件;B. FPGA是基于乘积项结构的可编程逻辑器件;C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置;D. 在Altera公司生产的器件中,__系列属FPGA结构。

5. 以下关于状态机的描述中正确的是(B )A.Moore型状态机其输出是当前状态和所有输入的函数B.与Moore型状态机相比,Mealy型的输出变化要领先一个时钟周期C.Mealy型状态机其输出是当前状态的函数D.以上都不对 6. 目前应用最广泛的硬件描述语言是( B )。

A. VHDLB. Verilog HDLC. 汇编语言D. C语言7. 一模块的I/O 端口说明:“input [7:0] a;”,则关于该端口说法正确的是(A )。

EDA复习要点全

EDA复习要点全

主要知识点1、从执行方式看VHDL的描述语句包括那些描述语句?用VHDL语言进行设计时,按描述语句的执行顺序进行分类,可将VHDL语句分为顺序执行语句(Sequential)和并行执行语句(Parallel)。

2、目前流行的硬件描述语言有那些?常用的硬件描述语言有ABEL-HDL AHDL.VHDL和Verilog-HDL.而VHDL和Verilog-HDL是当前最流行的并成为IEEE标准的硬件描述语言。

3、MAX+PLUS2中各种文件的扩展名有哪些?*.vhd *.sym *.gdf *.scf4、基于MAX+PLUS2的设计流程设计输入、编译处理、验证(包括功能仿真、时序仿真、和定时分析)和器件编程5、目前较流行的EDA设计软件有那些?ALTERA公司: MAX+PLUS IIQUARTUS II(全新的EDA软件,正在逐步替代 MAX+PLUS) LATTICE莱迪思公司: isp EXPERT SYSTEMisp DesignExpert SYSTEM XILINX西林公司: FOUNDATIONISE(全新的EDA软件,正在逐步替代FOUNDATION)6、可编程逻辑器件的分类?按照变成工艺分哪些类?SPLD 简单可编程逻辑器件CPLD 复杂可编程逻辑器件FPGA 现场可编程门阵列ISP 在系统(线)可编程逻辑器件按编程工艺分为:熔丝开关(一次可编程,要求大电流)可编程低阻电路元件(多次编程,要求中电压)EPROM型(紫外线擦除电可编程逻辑器件)E PROM型(电可擦写编程器件)基于SRAM的编程元件7、VHDL程序设计中常用的库有那些?哪些库是显式(默认打开的)的,哪些是隐式的?P159VHDL程序设计的常用库:IEEE库、STD库、WORK库、VITAL 库、用户定义库。

显示库:IEEE库用户定义库 VITAL库隐式库:、STD库、WORK库8、程序包由那两部分组成?分别有什么作用? P161程序包由两部分组成:程序包首和程序包体,程序包首为程序包定义接口,声明包中的类型、元件、函数和子程序。

数字系统设计与VerilogHDL第四版课程设计

数字系统设计与VerilogHDL第四版课程设计

数字系统设计与VerilogHDL第四版课程设计1. 概述数字系统设计与VerilogHDL第四版是数字系统设计方面的经典教材,本课程设计以此为指导,通过对数字系统的设计和VerilogHDL的学习,加深学生对数字系统的认知和理解,掌握一定的数字系统设计和VerilogHDL的编程能力。

2. 课程设计内容课程设计的主要内容是数字系统设计和VerilogHDL,其中包括以下几个方面:2.1 数字系统设计数字系统设计是计算机科学和电气工程领域中的核心课程,其原理、方法和技术在广泛的领域中得到了应用。

本次课程设计主要针对数字系统的设计理论进行研究和应用,包括数字系统的基本概念、数字系统的设计方法、数字系统的实现等。

2.2 VerilogHDLVerilogHDL是一种硬件描述语言,常用于数字电路的设计和验证。

本次课程设计的另一个重点是学习VerilogHDL的语法和规则,掌握VerilogHDL的基本编程能力,能够使用VerilogHDL设计并实现数字电路的各种功能。

2.3 课程设计任务针对课程设计的内容,我们将学生分为若干个小组,每个小组设计一个数字电路,并使用VerilogHDL对其进行描述和实现。

课程设计具体包括以下任务:•确定数字电路设计的主题和功能•设计数字电路的逻辑模型和信号流图•使用VerilogHDL实现数字电路的各个部分•对设计的数字电路进行仿真和测试•优化数字电路的性能和可靠性3. 课程设计评价本次课程设计的评价主要考虑以下几个方面:3.1 设计方案的创新性和实用性设计方案的创新性和实用性是评价设计方案的重要指标。

学生们要根据实际需求和现有技术,提出有价值的设计方案,并且能够实现。

3.2 VerilogHDL的使用情况VerilogHDL的使用情况是评价学生的编程能力的主要指标。

学生们需要掌握VerilogHDL的基本语法和规则,熟练地运用VerilogHDL进行编程实现。

3.3 数字电路的性能和可靠性数字电路的性能和可靠性是评价设计方案的另一个重要指标。

数字系统设计与veriloghdl课后答案

数字系统设计与veriloghdl课后答案

数字系统设计与veriloghdl课后答案【篇一:数字逻辑与数字系统设计习题参考答案】>第1章习题解答1.3 (1)86(2)219(3)106.25(4)0.6875 (4)0.1011.4 (1)101111(2)1001000(3)100001l.111.5 (1)(117)10=(165)8=(1110101)2=(75)16(2)(3452)10=(6574)8=(110101111100)2=(d7c)16(3)(23768.6875)10=(56330.54)8=(101110011011000.1011)2=(5cd 8.b)16 (4)(0.625)10=(0.5)8=(0.101)2=(0.a)16 1.6(1)(117)8=(1001111)2=(79)10(2)(7456)8=(111100101110)2=(3886)10(3)(23765.64)8=(10 0111 1111 0101.1101)2=(10229.8125)10(4)(0.746)8=(0.11111)2=(0.96875)10 1.7 (1)(9a)16=(10011010)2=(154)10(2) (3cf6)16=(11110011110110)2=(15606)10(3) (7ffe.6)16=(111111*********.011)2=(32766.375)10 (4)(0.c4)16=(0.110001)2=(0.765625)10 1-8(1)(125)10=(000100100101)8421bcd(2)(7342)10=(0111001101000010)8421bcd(3)(2018.49)10=(0010000000011000.01001001)8421bcd(4)(0.785)10=(0.011110000101)8421bcd1.9(1)(106)10=(1101010)2 原码=反码=补码=01101010 (2)(-98)10=(-1100010)2原码=11100010反码=10011101 补码=11100011(3)(-123)10=(-1111011)2 原码=11111011反码=10000101 补码=11111011(4)(-0.8125)10=(-0.1101)2 原码=1.1101000反码=1.0010111 补码=1.00110001.10(1)(104)10=(1101000)2 [1101000]补=01101000(-97)10=(-1100001)2 [-1100001]补=1001111101101000 + 10011111 0000011110000011 + 01001111 11010010[104-97]补=01101000+10011111=00000111, 104-97=(00000111)2=7 (2) (-125)10=(-1111101)2(79)10=(01001111)2[-1111101]补=10000011 [01001111]补=0100111101111000 [-125+79]补=10000011+01001111=11010010,-125+79=(-0101110)2=-46 (3) (120)10=(1111000)2[01111000]补=01111000(-67)10=(-1000011)2[-1000011]补=10111101[120-67]补=10000011+01001111=00110101,-125+79=(00110101)2=53 (4) (-87)10=(-1010111)2[-1010111]补=10101001(12)10=(1100)2[1100]补=00001100[-87+12]补=10101001+00001100=10110101,-125+79=(-1001011)2=-75+ 10111101 0011010110101001+ 00001100 10110101第2章习题解答2.3 解:根据逻辑图可直接写出逻辑表达式:(a) f=ab?bc;(b)f=abbcac解:设3个输入变量分别为a、b、c,输出为f,按题意,其中有奇数个为1,则输出f=1,因此可写出其逻辑表达式为f=abc?abc?abc?abc。

数字系统设计与verilog_HDL_王金明_第四版__EDA期末知识点复习(宁波工程学院电科版)

数字系统设计与verilog_HDL_王金明_第四版__EDA期末知识点复习(宁波工程学院电科版)

数字系统设计与verilog_HDL_王金明_第四版__EDA期末知识点复习(宁波工程学院电科版)1、采用硬件描述语言(HDL)进行电路设计的优势。

1)更适合用于描述规模大、功能复杂的数字系统2)语言标准化、便于设计的复用、交流、保存和修改3)设计与工艺的无关性,宽范围的描述能力,便于组织大规模、模块化的设计2、Verilog模块的结构模块声明:包括模块名字、模块输入、输出端口列表,结束关键字为endmodule端口定义:格式为:input: 端口名1,端口名2…端口名n;output: 端口名1,端口名2…端口名n;inout: 端口名1,端口名2…端口名n;3、标识符是用户在编程时给verilog对象起的名字,模块、端口和实例的名字都是标识符。

标识符可以是任意一组字母、数字以及符号“$”和“_”的组合,但标识符的第一个字符必须是字母(a-z,A-Z)或者是下划线“_”,标识符最长可包含1023个字符,此外,标识符区分大小写。

4、整数写法:+/-’1、在较长的数之间可用下划线分开2、当数字不说明位宽时,默认值为32位3、 X或(z)在二进制中代表1位x(或z),在八进制中代表3位,在16进制中代表4位4、如果没有定义一个整数的位宽,其宽度为相应值中定义的位数。

5、如果定义的位宽比实际的位数长,通常在左边填0补位,但如果最左边一位为x或z,就相应的用x或z左边补位。

6、“?”是高阻态z的另一种表示符号,在数字的表示中,字符“?”和z 是完全等价的,可相互代替。

7、整数可以带符号,并且正负号应写在最左边,负数通常表示为二进制补码的形式。

8、当位宽与进制缺省时表示的是10进制数9、在位宽和‘之间,以及进制和数值之间允许出现空格,但’和进制之间以及数值之间是不能出现空格的。

要求掌握整数正确的书写方式。

5、向量:宽度大于1位的变量;标量:宽度为1位的变量。

定义2个8位reg型矢量:reg [7:0] ra, rb;6、运算符(1)注意:逻辑运算符,例如逻辑与&&、逻辑或||、逻辑非!,运算结果是1位的。

EDA期末知识整理

EDA期末知识整理

一关系混淆类概念1简述VHDL语言实体声明中:IN,OUT,BUFFER和INOUT 等端口模式各自的特点。

端口模式特点为:IN:输入型,只读模式。

OUT:输出型,只写。

BUFFER:缓冲型,带有读功能的输出模式,即输出并向内部反馈,与 out 相似,但可读。

INOUT:输入输出型,可读可写,可以通过该端口读入或写出信息。

2简述VHDL中信号、变量的功能特点及使用方法,区别。

答:信号:代表电路中的某一条硬件连接线,包括输入、输出端口,信号赋值存在延迟。

全局量,使用场所:architecture、package、entitiy。

变量:代表电路中暂存某些值的载体。

变量赋值不存在延迟。

局部量,使用场所:process、function、procedure。

信号变量赋值符号<= :=功能电路的内部连接内部数据交换作用范围全局,进程和进程之间的通信进程的内部行为延迟一定时间后才赋值立即赋值3 VHDL的基本结构及每部分的基本功能?答:VHDL的基本结构有:库(Library)、程序包(Package)、实体(Entity)、结构体(Architecture)和配置(Configuration)几部分组成。

每部分的基本功能为:库(Library):用来存储预先完成的程序包和数据集合体的仓库。

以供设计者对一些统一的语言标准或数据格式进行调用。

程序包(Package):将已定义的常数、数据类型、元件语句、子程序说明等收集起来构成一个集合。

实体(Entity):定义系统的输入输出端口结构体(Architecture):定义系统的内部结构和功能。

配置(Configuration):从某个实体的多种结构体描述方式中选择特定的一个作为实体的实现方式。

4试比较case语句和with-select语句的区别case 语句 with_select 语句不同点:顺序执行语句并行执行语句只能在process 中或子程序中不能在process或子程序中二名词解释和基本概念:ASIC专用集成电路,FPGA现场可编程门阵列CPLD复杂的可编程逻辑器件,IP知识产权核或知识产权模块JTAG联合测试行动小组HDL硬件描述语言VHDL超高速集成电路硬件描述语言SOPC:可编程片上系统PCB:(Process Control Block)进程控制块RTL:寄存器传输级FSM:有限状态机LPM:可设置模块库IEEE电子电气工程师协会LPM参数可定制宏模块库UART串口(通用异步收发器)ISP在系统编程LAB逻辑阵列块可编程器件分为 FPGA 和 CPLDFPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。

EDA_VerilogHDL_复习提纲(word文档良心出品)

EDA_VerilogHDL_复习提纲(word文档良心出品)

1.EDA技术是20世纪后期,伴随着微电子技术、大规模集成电路制造技术、计算机辅助工程、可编程逻辑器件以及电子设计技术和工艺的发展而同步发展形成的一门综合性的技术与学科。

2在EDA工具软件平台上,自动完成从软件方式描述的数字系统到硬件系统的逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线)、逻辑优化和仿真测试等功能,随之完成对于特定目标芯片的适配、逻辑映射、编程下载等工作,直至硬件实现整个数字系统3.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序4.设计输入的方式有原理图、硬件描述语言、状态图以及波形图5.按照仿真的电路描述级别的不同,HDL仿真器可以完成:系统级仿真,行为级仿真,RTL级仿真,门级(时序)仿真。

按照仿真是否考虑硬件延时分类,可以分为:功能仿真和时序仿真。

仿真器可分为基于元件(逻辑门)仿真器和基于HDL语言的仿真器6. IP核是知识产权核或知识产权模块,在EDA技术中具有十分重要的地位。

半导体产业的IP定义为用于ASIC或FPGA中的预先设计好的电路功能模块。

IP分为软IP、固IP和硬IP。

7.可编程逻辑器件PLD是一种通过用户编程或配置实现所需逻辑功能的逻辑器件,也就是说用户可以根据自己的需求,通过EDA开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能8.两种可编程逻辑结构是基于与-或阵列可编程结构(乘积项逻辑可编程结构)、基于SRAM查找表的可编程逻辑结构9.PLD按集成度分类:简单PLD、复杂PLD;按结构分类:基于“与-或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM型、Flash型10.四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定,与阵列可编程;GAL是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元(OLMC)11.CPLD的组成结构:逻辑阵列块(由逻辑宏单元构成)、扩展乘积项(共享和并联)、可编程连线阵列、I/O控制块12.FPGA的组成结构:逻辑阵列块LAB(由多个逻辑宏单元构成)、嵌入式存储器块、嵌入式硬件乘法器、I/O单元和PLL等模块13.Verilog的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout14.Verilog中常用有两种变量:寄存器型变量(用reg定义)、网线型变量(用wire定义)15.Verilog有两种赋值方式:阻塞式赋值(=)、非阻塞式赋值(<=)16.Verilog有四种循环语句:for语句、repeat语句、while语句、forever语句17.Verilog的描述风格:RTL描述、数据流描述、行为描述、结构描述18.从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机;从状态机的描述结构上分,有单过程状态机和多过程状态机;从状态机表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。

《数字系统设计与Verilog HDL》教学大纲

《数字系统设计与Verilog HDL》教学大纲

《数字系统设计与Verilog HDL》教学大纲课程中文名称: 数字系统设计与Verilog HDL 课程英文名称: Digital system design with Verilog HDL课程代码: 学时/实践或实验/学分:40/8/2.5课程类别: 课程性质: 选修课适用专业:执笔人: 审定人:审批人:一、教学目标教学目标是使学生了解掌握EDA技术的基础知识、可编程逻辑器件的基本结构、硬件描述语言的语法、编程方法以及相关开发软件的使用方法。

重点掌握:PLD器件的结构和开发流程、开发软件的使用方法、Verilog HDL语言的基本语法和利用Verilog HDL语言建模、仿真和综合的设计复杂数字逻辑电路与系统设计的方法和技术。

目标1:了解EDA技术的发展概况,掌握EDA技术的基本概念及相关的基础知识,掌握数字系统设计的设计方法和流程。

了解可编程逻辑器件的分类,掌握可编程逻辑器件的基本结构掌握,掌握CPLD及FPGA器件的基本结构掌握。

目标2:掌握Verilog HDL的语言要素、各种语句以及设计方法等基础知识;掌握Verilog HDL 模块和测试模块的基本结构,能够利用Verilog HDL语言对数字电路进行建模。

目标3:掌握Verilog HDL的三种描述方式;掌握层次设计的方法以及一些设计技巧;并掌握利用有限状态机对数字电路进行建模的方式。

目标4:掌握开发软件及仿真软件的使用流程及方法,能够对设计文件进行仿真验证。

二、课程教学目标与毕业要求关系矩阵注:用☆☆☆、☆☆、☆分别表示教学目标对毕业要求的贡献度为强、中、弱。

三、教学内容和学时分配(32学时)《数字系统设计与Verilog HDL》在理论教学方面侧重于PLD基本原理、Verilog HDL语法要素和行为语句、Verilog HDL阻塞与非阻塞赋值、Verilog HDL有限状态机设计和数字电路设计。

实验教学方面侧重于利用现代 EDA设计流程、软件仿真应用、仿真测试程序设计、层次设计。

HDL知识点总结

HDL知识点总结

HDL 考前小结一、名词解释(专业术语的对应关系):可编程阵列逻辑(PAL)、可编程逻辑器件(PLD)、大规模可编程逻辑器件两种:复杂可编程逻辑器件(CPLD)、现场可编辑门阵列(FPGA);电子设计自动化(EDA)、电子设计系统自动化(EsDA)、自底向上(Bottom-Up)、自顶向下(Top-Down)、专用集成电路(ASIC)、可配置逻辑模块(CLB)、输入输出模块(IOB)、硬件描述语言(HDL)、寄存器传输级(RTL)、X(逻辑值不确定)、Z(高阻,浮动状态)、posedge(上升沿)、negedge(下降沿)、电路功能模块(IP)、TTL、仿真平台(Testbench)、UDP(用户自定义原语)二、选择题(语法、 EDA 的基本概念、课件)基础了解:1、标识符和关键字关键字是语言中预留的用于定义语言结构的特殊标识符。

Verilog 中关键字全部小写。

标识符是程序代码中对象的名字,程序员使用标识符来访问对象。

Verilog 中标识符由字母数字字符、下划线和美元符号组成,区分大小写。

其第一个字符必须是数字字符或下划线。

reg value;//reg 是关键字; value 是标识符2. FPGA技术概述与特点以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统并最终形成集成电子系统或专用集成芯片的一门新技术。

3 、FPGA 技术的特点用软件的方式设计硬件②设计过程中可用有关软件进行各种仿真③系统可现场编程,在线升级④片上系统,体积小、功耗低、可靠性高数字系统的设计准则①.分割准则②.系统的可观测性③.同步和异步电路④.最优化设计⑤ . 系统设计的艺术三、简答题1、串行、并行语句:verilog HDL 的 module 里一般由块语句组成,块语句既有并行块又有串行块 ,块与块之间是并行执行 ,顺序块内是串行执行,并行块内是并行执行 . 常用形式为 initial 和always 形式里插入块语句。

数字系统设计与VerilogHDL课后习题

数字系统设计与VerilogHDL课后习题

数字系统设计与VerilogHDL课后习题习题11.1现代EDA技术的特点有哪些?1.2什么是T op-down设计方式?1.3数字系统的实现方式有哪些?各有什么优缺点?1.4什么是IP复用技术? IP核对EDA技术的应用和发展有什么意义?1.5用硬件描述语言设计数字电路的优势是什么?1.6结合自己的使用情况谈谈对EDA工具的认识。

1.7基于FPGA/CPLD的数字系统设计流程包括哪些步骤?1.8什么是综合?常用的综合工具有哪些?1.9功能仿真与时序仿真有什么区别?1.10 FPGA与ASIC在概念上有什么区别?习题22.1 PLA和PAL在结构上有什么区别?2.2说明GAL的OLMC有什么特点,它怎样实现可编程组合电路和时序电路?2.3简述基于乘积项的可编程逻辑器件的结构特点。

2.4基于查找表的可编程逻辑结构的原理是什么?2.5基于乘积项和基于查找表的结构各有什么优点?2.6 CPLD和FPGA在结构上有什么明显的区别?各有什么特点?2.7 FPGA器件中的存储器块有何作用?2.8 Altera的MAX II器件是属于CPLD还是FPGA,请查阅有关资料并进行分析。

2.9边界扫描技术有什么优点?2.10说说JTAG接口都有哪些功能。

2.11 FPGA/CPLD器件未来的发展趋势有哪些?习题44.1 用Verilog设计一个8位加法器,进行综合和仿真,查看综合和仿真结果。

4.2 用Verilog设计一个8位二进制加法计数器,带异步复位端口,进行综合和仿真,查看综合和仿真结果。

4.3用Verilog设计一个模60的BCD码计数器,进行综合和仿真,查看综合和仿真结果。

习题66.1阻塞赋值和非阻塞赋值有什么本质的区别?6.2用持续赋值语句描述一个4选1数据选择器。

6.3用行为语句设计一个8位计数器,每次在时钟的上升沿,计数器加1,当计数器溢出时,自动从零开始重新计数。

计数器有同步复位端。

6.4设计一个4位移位寄存器。

EDA技术实用教程-Verilog(第四版)前两章考试复习资料

EDA技术实用教程-Verilog(第四版)前两章考试复习资料

第一章 EDA 基础知识1.EDA 技术概念答:利用EDA技术可以实现专用集成电路ASIC的设计和实现(FPGA和CPLD是实现这一途径的主流器件。

FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。

FPGA和CPLD 的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。

)2. EDA 技术发展的 3 个阶段(CAD , CAE ,EDA)答:(1)20世纪70年代:CAD阶段-CAD概念已见雏形,人们开始利用计算机及取代手工劳动,辅助进行集成电路板图编辑、PCB(印制电路板)布局布线等工作。

(2)20世纪80年代:CAE阶段。

(3)20世纪90年代:EDA阶段。

3. EDA 技术实现目标答:利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC或印制电路板(PCB)的设计和实现(图1-1)。

4.EDA 技术实现目标的途径答:(1)可编程逻辑器件:;FPGA和CPLD是实现这一途径的主流器件。

FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。

FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。

(2)半定制或全定制ASICa:门阵列ASICb:标准单元ASIC(3)混合ASIC5.硬件描述语言答: VHDL、Verilog HDL、SystemVerilog、System C6. VERILOG HDL的发展过程(1)含义(2)创建时间答:1983年、创建公司:Gateway Design Automation(GDA)(3)特点:答:a:参照C语言的语法设立的(但与C有本质的区别)b:代码简明扼要,使用灵活,且语法规定不是很严谨,很容易上手。

c:具有很强的电路描述和建模能力。

7. VERILOG HDL 的设计方法,分为哪几个阶段答:8.自顶向下,自底向上方法比较答:自底向上:低效、低可靠性、费时费力、成本高昂。

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计多功能数字钟设计程序清单数字系统设计与verilog HDL(第四版)王金明/*引脚锁定基于DE2一70,芯片为EP2C70F896,信号定义如下: Clk50m: 50MHz 时钟输,mode:模式选择0:计时模式1:设置闹钟模式mcheck:手动调整时间turn:手动调整时间,在时、分之间选择change:对选中的数据调整led hourl,led_hour0,led_minul,led_minu0,led_secl,led sec0;alert: 闹钟输出ld_alert: 是否设置了闹钟ld_hour,id_min,ld_sec:在调整时,指示选中了时,分还是秒*/moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led_minu0, led_sec1,led_sec0, alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec);input clk50m;input mode; // key0键input turn; //keyl键input change; // key2 键input mreset; //switch0复位,低电平有效output alert; //gpioO->IOAOoutput ld_alert; //ledgO-led19output ld_check; //ledgl-led22output ld_hour; //ledr3-led13output ld_min; //ledr9-led9output ld_sec; //ledr7-led7output[6:0] led_hour1;output[6:0] led_hour0;output[6:0] led_minu1;output[6:0] led_minu0;output[6:0]led_sec1;output[6:0]led_sec0;reg [1:0] modestate;//00: 计时模式10:闹钟模式; 01:手动调整模式;11:非法模式wire nowmode;//记录当前模式,0:计时模式;1: 设置闹钟模式wire ischecking; //是否在手动调整时间assign {nowmode, ischecking}=modestate;always@(negedge mode)//两个按钮都是低电平有效begincase (modestate)2'b00 : modestate<=2'b10; //设置闹钟模式优先2'b10: modestate<=2'b01; //手动调整模式2'b01: modestate<=2'b00;default :modestate<=2'b00;endcaseendwire reset, clk_1hz;switch #(8) rmjitter(clk50m,mresetr,reset);clk50mtol genlhz (clk50m, clk_1hz) ; //生成1Hz的时钟wire [2 : 0] selcode; //对turn信号在不同模式bitsel seldecoder (nowmode, ischecking, turn, selcode, reset);wire [3:0] clocktime0,clocktimel,clocktime2,clocktime3,clocktime4,clockthre5;//计时输出的时钟数值wire clockalarmon; //整点报时的闹钟输出wire [2 : 0] counterselcode;assign counterselcode=(modestate==2'b01)?selcode:3'b000;counter_time clock_time (clk_1hz,counterselcode,~change,clocktime5,clocktime4,clocktime3,clocktime2,clock time1,clocktime0,clockalarmon,reset);wire[3:0] alarmtime0,alarmtime1,alarmtime2,alarmtime3;wire alarmon;alarm_time alarm_time ( clk_1hz , nowmode , selcode [ 2 : 1] , change ,{clocktime5, clocktime4, clocktime3, clocktime2, clocktime1},{alarmtime3, alarmtime2, alarmtime1, alarmtime0} , alarmon, reset) ;wire voiceout ;alarm alarmvoice (clk50m,{clockalarmon, alarmon} ,voiceout, raset) ;//显示输出部分assign {ld_hour,ld_min,ld_sec}=(ischecking||nowmode)?selcode:3'b000; assign alert=voiceout;reg[3:0] showout2,showout3,showout4,showout5;led led5 (showout5,led_hour1) ; //led译码显示led led4 (showout4,led_hour0) ;led led3 (showout3,led_minu1) ;led led2 (showout2,led_minu0) ;led led1 (clocktime1,led_sec1) ;led led0 (clocktime0,led_sec0) ;alwaysbegin if ( nowmode)begin showout5=alarmtime3 ; showout4=alarmtime2 ;showout3=alarmtime1; showout2=alarmtime0 ; end else beginshowout5=clocktime5; showout4=clocktime4 ;showout3=clocktime3 ; showout2=clocktime2 ; end endassign ld_alert=nowmode; assign ld_check=ischecking;endmodule/*alarm.V:闹铃模块Clk50m: 50MHz输入时钟alarmon:闹铃是否打开,2'b00:不打开:2'b01:闹钟;2'b10:整点报时ala rmoUt:闹铃声音输出*/module alarm(clk50m,alarmon,alarmout,reset);input[1:0] alarmon;input clk50m,reset;output reg alarmout;reg[15:0] counter_1k;wire clk_1k;assign clk_1k=counter_1k[4];always@(posedge clk50m)begin if (counter_1k==20) counter_1k<=0;else counter_1k<=counter_1k+1'b1; endwire ddd_du_out,ddd_out;sound_ddd_du ddd_du (clk_1k,alarmon[1] ,ddd_du_out) ;sound_ddd ddd(clk_1k,alarmon[0],ddd_out);alwaysbegin if (!reset)begin if (alarmon [0]==1'b1) //ddd,闹钟的响铃优先级更高alarmout=ddd_out ;else if (alarmon==2'b10) alarmout=ddd_du_out;else alarmout=0 ;end else alarmout=0 ;endendmodule/*alarm_time.V:闹钟时间设定模块enable:使能信号Sel:在时、分之间切换选择10:时;01:分inc:对选中的信号自增basetime:基准时钟*/module alarm_time (clk_1hz , enable, sel, inc, basetime, alarmouttime, alarm_on, reset) ;input clk_1hz,enable, inc,reset;input[1:0] sel;input[4*5-1:0] basetime;output reg alarm_on;output [4*4-1: 0] alarmouttime;reg [ 3 : 0] hour1, hour0 , minu1, minu0 ; //存储的设定时间always@ (posedge inc or posedge reset)begin if (reset) //reset=1时复位begin { hour1, hour0,minu1, minu0 } <=16'h0 ; endelse beginif (enable) beginif (sel==2'b10) //设置时begin if({hour1,hour0}==8'h23) {hour1,hour0}<=8'h00;else if (hour0==9)begin hour0<=0;hour1<=hour1+1'b1; endelse hour0<=hour0+1'b1;endelse if(sel===2'b01)//设置分begin if({minu1,minu0}==8'h59) {minu1,minu0}<=8'h00;else if (minu0==4'h9)begin minu0<=4'h0;minu1<=minu1+4'h1;endelse minu0<=minu0+4'h1; endelse {hour1,hour0,minu1,minu0}<=16'h0;end endendalways //闹钟开始条件beginif(({hour1,hour0,minu1,minu0}==basetime[ (4*5-1) :4]) && (basetime[3:0]<2)) alarm_on=1'b1;else alarm_on=1'b0; endassign alarmouttime={ hour1,hour0,minu1,minu0};endmodule/*counter time,v:计时模块,并留有调整接;check:调整信号,3位,分别调整时、分、秒,调整方法:将计数输出给加法器,把调整信息转换成异步置数信息,将加法器的输出作为置数值;hour1,hour0,minul, minu0, sec1,sec0:输出的计时时钟;alarmout:整点报时输出*/modulecounter_time(clk_1hz,check,inc,hour1,hour0,minu1,minu0,sec1,sec0,alarmout,reset); input clk_1hz,inc,reset;input[2:0] check;output[3:0] hour1,hour0,minu1,minu0,sec1,sec0;output reg alarmout;reg clk_1hz_md;wire [6: 0] carryclk;reg[5:0] incplus;//自增脉冲wire [5 : 0] carry; //进位时钟wire [3 : 0] adderout0,adderout1,adderout2,adderout3,adderout4,adderout5;wire [3 : 0] timerout0,timerout1,timerout2,timerout3,timerout4,timerout5; hexcounter counter_sec0(carryclk[0],reset,4'd9,4'b0,timerout0,carry[0]); hexcounter counter_sec1(carryclk[1],reset,4'd5,4'b0,timerout1,carry[1]); hexcounter counter_minu0(carryclk[2],reset,4'd9,4'b0,timerout2,carry[2]); hexcounter counter_minu1(carryclk[3],reset,4'd5,4'b0,timerout3,carry[3]);wire [3:0] hour0max;assign hour0max=(timerout5==4'h2)?(4'h3) : (4'h9);hexcounter counter_hour0(carryclk[4],reset,hour0max,4'b0,timerout4,carry[4]); hexcounter counter_hour1(carryclk[5],reset,4'd2,4'b0,timerout5,carry[5]);//每个计时器的时钟,由前级进位和自堦脉冲相加得到assign carryclk[0]=(check==4'h0) ? clk_1hz_md:incplus[0];assign carryclk[1]=carry[0]|incplus[1];assign carryclk[2]=(check==4'h0) ? carry[1]:incplus[2];assign carryclk[3]=carry[2]|incplus[3];assign carryclk[4]=(check==4'h0) ? carry[3]:incplus[4];assign carryclk[5]=carry[4]|incplus[5];always //对异步置位信号进行解码begin case (check)3 'b001: begin clk_1hz_md=0;incplus={5 'b00000, inc} ;end3 'b010 : begin clk_1hz_md=0;incplus={3'b000,inc,2'b00};end3 'b100 : begin //在正常的调节状态中clk_1hz_md=0;incplus={1'b0, inc, 4'b000};enddefault:begin incplus=6'b000000;clk_1hz_md=clk_1hz ;endendcaseendalways begin if (((reset|check)==0)&&(timerout3==0) && (timerout2==0) && (timerout1<2)) alarmout=1;//时间小于20秒的时间内else alarmout=0;endassign hour1=timerout5;assign hour0=timerout4;assign minu1=timerout3;assign minu0=timerout2;assign sec1=timerout1;assign sec0=timerout0;endmodule/*Clk50mtol.v: 50mhz 时钟分频到lhz */module clk50mtol(clk50m,clk1hz);input clk50m;output clk1hz;reg [25:0]counter_1hz;//从50mhz 分频到lhz 的计数器assign clk1hz=counter_1hz[14];//assign clk1hz=counter_1hz[25];always@ (posedge clk50m)beginif(counter_1hz==20000) counter_1hz<=0;else counter_1hz<=counter_1hz+1'b1;endendmodule/*led.v:7段数码管(led)译码显示模块datain:4位,10进制数输入ledout:7位,数码管的7段*/module led(datain,ledout);parameter INWIDTH=4;parameter OUTWIDTH=7;input[INWIDTH-1: 0] datain;output [OUTWIDTH-1:0] ledout;reg[OUTWIDTH-1:0] dataout;assign ledout=dataout;always begincase (datain)0 : dataout<=7'b1000000;1 : dataout<=7'b1111001;2 : dataout<=7'b0100100;3 : dataout<=7'b0110000;4 : dataout<=7'b0011001;5 : dataout<=7'b0010010;6 : dataout<=7'b0000010;7 : dataout<=7'b1111000;8 : dataout<=7'b0000000;9 : dataout<=7'b0010000;default : dataout<=7'b1000000;endcaseendendmodule/*switch-v:对按键开关的消抖电路,采用一个频率较低的时钟,对输入进行采样,消除抖动*/module switch(clk,keyin,keyout);parameter COUNTWIDTH=8;input clk, keyin;output reg keyout;reg [COUNTWIDTH-1: 0] counter;wire clk_use; //频率较低的时钟assign clk_use=counter [COUNTWIDTH-1];always@ (posedge clk)counter<=counter+1'b1;always@ (posedge clk_use)keyout<=keyin;endmodule/*bitsel-v:将输出解码成对时、分、秒的选择(并且分闹钟设置模式还是计时模式)Alarmmode:是否是在设置闹钟模式checkmode:是否是在调整时间模式*/module bitsel(alarmmode, checkmode, sel, selcode, reset) ;input alarmmode, checkmode, sel, reset;output reg [2:0] selcode;reg [2:0] check_code ;reg [1:0] alarm_code ;always@ (negedge sel or posedge reset)begin if (reset) check_code<=3'b000; //reset=1 复位else begincase (check_code)3 'b000: check_code<=3 'b001;3 'b001: check_code<=3 'b010;3 'b010: check_code<=3 'b100;3 'b100: check_code<=3 'b001;default: check_code<=3 'b000;endcaseendendalways@ (negedge sel or posedge reset)begin if (reset) alarm_code<=2 'b00; //低电平复位else begincase (alarm_code)2'b00 : alarm_code<=2'b01;2 'b01 : alarm_code<=2 'b10 ;2 'b10 : alarm_code<=2 'b01;default : alarm_code<=2 'b00;endcaseendendalwaysbegin if (alarmmode^checkmode) //两个当中只有1个为1 begin if (checkmode) selcode=check_code;else selcode={alarm_code,1'b0}; endelse selcode=3 'b000 ;endendmodule/*adder.v:加法器*/module adder(in1, in2, out);parameter in1width=8;parameter in2width=8;parameter outwidth=8;input [in1width-1: 0] in1;input [in2width-1: 0] in2;output[outwidth-1: 0] out;assign out=in1+in2;endmodule/*excounter-v:16进制计数的一个计数器*/module hexcounter (clk, set, max, setdata, dataout, carryout) ; input clk,set;input[3:0] max,setdata;output carryout;output[3:0] dataout;reg[3:0] counter;reg carrybit;assign carryout=carrybit;assign dataout=counter;always@ (posedge clk or posedge set)begin if (set) //set是高电平有效begin counter<=setdata;carrybit<=0 ;endelse begin if( (counter==max)||(counter>max) )begin counter<=0 ;carrybit<=1;endelse begin counter<=counter+1'b1;carrybit<=0 ;endendendendmodule/*sound_ddd.V:发出嘀嘀嘀闹铃声模块*/module sound_ddd(clk_1k, on, out);parameter soundspace=30;parameter shotstopspace=20; //20ms,两个嘀声的时间距离parameter longstopspace=50;//50ms,连续三个嘀后的时间距离input clk_1k,on;output reg out;reg sound;always@ (posedge clk_1k)begin sound<=~sound; endreg[10:0] mscount;always@ (posedge clk_1k)begin if (mscount== (soundspace*3+shotstopspace*2+longstopspace-1) )mscount<=0;else mscount<=mscount+1'b1;endalways@ (negedge clk_1k)begin if (on)begin if ( (mscount>=0) && (mscount<soundspace) ) out<=sound;else if ( (mscount>=soundspace) && (mscount< (soundspace+shotstopspace) ) )out<=0;else if ( (mscount>= (soundspace+shotstopspace) ) && (mscount< (soundspace+shotstopspace) +soundspace) )out<=sound;else if ( (mscount>= (soundspace+shotstopspace) +soundspace) && (mscount< (soundspace+shotstopspace) *2) )out<=0;else if ( (mscount>= (soundspace+shotstopspace) *2)&&(mscount< ((soundspace+shotstopspace) *2+soundspace) ) )out<=sound;else out<=0;endelse out<=0 ;endendmodule/* sound ddd du,v:发出声音嘀嘀嘀一嘟声音模块*/module sound_ddd_du (clk_1k, on, out) ;parameter SOUNDSPACE=30;parameter shotstopspace=20;//20ms,两个嘀声的时间距离parameter longsoundspace=60; //嘟的长度input clk_1k, on;output reg out;reg sound_di, sound_du;always@ (posedge clk_1k) sound_di<=~sound_di;always@ (posedge sound_di) sound_du<=~sound_du;reg [ 11 : 0 ] mscount ;always@ (posedge clk_1k)begin if (on)begin if (mscount< (SOUNDSPACE+shotstopspace) *3+longsoundspace+10)mscount<=mscount+1'b1;endelse mscount<=0 ;endalways@ (negedge clk_1k)begin if (on)begin if ( (mscount>=0) && (mscount<SOUNDSPACE) ) out<=sound_di;else if ( (mscount>=SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) ) )out<=0 ;else if ( (mscount>= (SOUNDSPACE+shotstopspace) ) && (mscount< (SOUNDSPACE+shotstopspace) +SOUNDSPACE) )out<=sound_di ;else if ( (mscount>= (SOUNDSPACE+shotstopspace) +SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) *2) )out<=0;else if ( (mscount>= (SOUNDSPACE+shotstopspace) *2) && (mscount< ( (SOUNDSPACE+shotstopspace) *2+SOUNDSPACE) ) )out<=sound_di;else if ( (mscount>= (SOUNDSPACE+shotstopspace) *2+SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) *3) )out<=0;else if ( (mscount>= (SOUNDSPACE+shotstopspace) *3) && (mscount< ( (SOUNDSPACE+shotstopspace) *3+longsoundspace) ) )out<=sound_du;else out<=0;endendendmodule。

第7章王金明verilog HDL 程序设计教程

第7章王金明verilog HDL 程序设计教程

语句描述的4选 【例7.2】 用case语句描述的 选1 MUX 】 语句描述的 module mux4_1b(out,in1,in2,in3,in4,s0,s1); input in1,in2,in3,in4,s0,s1; output reg out; always@(*) //使用通配符 使用通配符 case({s0,s1}) 2'b00:out=in1; 2'b01:out=i9;b11:out=in4; default:out=2'bx; endcase endmodule
【例7.4】 数据流描述的 选1 MUX 】 数据流描述的4选 module mux4_1c(out,in1,in2,in3,in4,s0,s1); input in1,in2,in3,in4,s0,s1; output out; assign out=(in1 & ~s0 & ~s1)|(in2 & ~s0 & s1)| (in3& s0 & ~s1)|(in4 & s0 & s1); endmodule
门元件的调用 对于buf和not两种元件的调用,需注意 和 两种元件的调用, 对于 两种元件的调用 的是:它们允许有多个输出, 的是:它们允许有多个输出,但只能 有一个输入。比如: 有一个输入。比如:
not N1(out1,out2,in); //1个输入 ,2个输出 个输入in, 个输出 个输出out1,out2 个输入 buf B1(out1,out2,out3,in); //1个输入 ,3个输出 个输入in, 个输出 个输入 out1,out2,out3
用基本门实现的4选 用基本门实现的 选1 MUX原理图 原理图
7.3 行为描述
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、采用硬件描述语言(HDL)进行电路设计的优势。

1)更适合用于描述规模大、功能复杂的数字系统2)语言标准化、便于设计的复用、交流、保存和修改3)设计与工艺的无关性,宽范围的描述能力,便于组织大规模、模块化的设计2、Verilog模块的结构模块声明:包括模块名字、模块输入、输出端口列表,结束关键字为endmodule端口定义:格式为:input: 端口名1,端口名2…端口名n;output: 端口名1,端口名2…端口名n;inout: 端口名1,端口名2…端口名n;3、标识符是用户在编程时给verilog对象起的名字,模块、端口和实例的名字都是标识符。

标识符可以是任意一组字母、数字以及符号“$”和“_”的组合,但标识符的第一个字符必须是字母(a-z,A-Z)或者是下划线“_”,标识符最长可包含1023个字符,此外,标识符区分大小写。

4、整数写法:+/-<size位宽>’<base进制><value数字>1、在较长的数之间可用下划线分开2、当数字不说明位宽时,默认值为32位3、X或(z)在二进制中代表1位x(或z),在八进制中代表3位,在16进制中代表4位4、如果没有定义一个整数的位宽,其宽度为相应值中定义的位数。

5、如果定义的位宽比实际的位数长,通常在左边填0补位,但如果最左边一位为x或z,就相应的用x或z左边补位。

6、“?”是高阻态z的另一种表示符号,在数字的表示中,字符“?”和z是完全等价的,可相互代替。

7、整数可以带符号,并且正负号应写在最左边,负数通常表示为二进制补码的形式。

8、当位宽与进制缺省时表示的是10进制数9、在位宽和‘之间,以及进制和数值之间允许出现空格,但’和进制之间以及数值之间是不能出现空格的。

要求掌握整数正确的书写方式。

5、向量:宽度大于1位的变量;标量:宽度为1位的变量。

定义2个8位reg型矢量:reg [7:0] ra, rb;6、运算符(1)注意:逻辑运算符,例如逻辑与&&、逻辑或||、逻辑非!,运算结果是1位的。

如果操作数不止1位的话,则应将操作数作为一个整体来对待,即如果操作数全是0,则相当于逻辑0,但只要某一位是1,则操作数就应该整体看作逻辑1。

例如:若A = 4’b0000, B = 4’b0101,则有:A &&B = 0;(2)位拼接运算符:{ }将两个或多个信号的某些位拼接起来7、initial语句和always语句的区别:initial语句常用于仿真中的初始化,initial过程块中的语句只执行一次,不带触发条件;always块内的语句则是不断重复执行的,Always过程语句是可综合的,带有触发条件。

8、posedge:上升negedge:下降弄清楚同步和异步的概念。

例如:如果Nreset和Nset是异步,时钟clock上升沿触发。

always @(posedge clk or posedge rst_n )if (! rst_n ) Q<=0;else if(Nset) Q<=1;else Q<=D;9、阻塞赋值与非阻塞赋值的区别:非阻塞赋值在整个过程块结束时才完成赋值操作;阻塞赋值在该语句结束时就立即完成赋值操作。

在always过程块中,阻塞赋值可以理解为赋值语句是顺序执行的,而非阻塞赋值可以理解为赋值语句是并发执行的.10、条件语句,条件语句也称分支语句。

11、顺序执行:阻塞赋值语句;并发执行:非阻塞赋值语句。

12、用行为语句设计一个8位计数器,每次在时钟的上升沿,计数器加1,当计数器逸出时,自动从零开始重新计数。

计数器有同步复位端。

module count(count,reset,clk);input clk,reset;output clk,reset;output [7:0] count;reg count;always @(posedge clk)if(reset==1)begincount=8'b0;endelse if (count=8'b11111111)begincount=9'b0;endelse ifbegincount=count+1;endend module13奇偶校验位产生器的Verilog HDL描述:module parity(evrn_bit,odd_bit,a);input[7:0] a; output even_bit,odd_bit;assign even_bit=^a; //生成偶校验位assign odd_bit=~even_bit; //生成奇校验位endmodule;14、课本197页:8.2 有限状态机的Verilog描述参考例8.3,例8.7,学会用有限状态机设计序列检测器。

module fsm_seq1111(x,z,clk,reset);input x,clk,reset;output reg z;reg[4:0] state;parameter S0=’d0,S1=’d1,S2=’d2,S3=’d3,S4=’d4; always @(posedge clk)begin if(reset) begin state<=S0;z<=0; endelse casex(state)S0: begin if(x==0) begin state<=S0;z<=0;end else begin state<=S1;z<=0;end endS1: begin if(x==0) begin state<=S0;z<=0;end else begin state<=S2;z<=0;end endS2: begin if(x==0) begin state<=S0;z<=0;end else begin state<=S3;z<=0;end endS3: begin if(x==0) begin state<=S0;z<=0;end else begin state<=S4;z<=1;end endS4: begin if(x==0) begin state<=S0;z<=0;end else begin state<=S4;z<=1;end enddefault: state<=S0;endcaseendendmodule15、状态机设计流水灯:module led_water(clk50M,rst,led);input clk50M;output[7:0] led;input rst;wire clk_5hz;reg[7:0] led_r;reg[3:0] state;reg[23:0] count;parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4,s5='d5,s6='d6,s7='d7,s8='d8,s9='d9,s10='d10,s11='d11,s12='d12,s13='d13,s14='d14,s15='d15;always @(posedge clk50M)beginif(count==10000000)begin count<=1'b0;endelsecount<=count+1'b1;endassign clk_5hz=count[23];assign led=led_r;always @(posedge clk_5hz)beginif(!rst) state=s0;else case(state)s0: begin led_r=8'b01111111; state<=s1;ends1: begin led_r=8'b10111111; state<=s2;ends2: begin led_r=8'b11011111; state<=s3;ends3: begin led_r=8'b11101111; state<=s4;ends4: begin led_r=8'b11110111; state<=s5;ends5: begin led_r=8'b11111011; state<=s6;ends6: begin led_r=8'b11111101; state<=s7;ends7: begin led_r=8'b11111110; state<=s8;ends8: begin led_r=8'b11111100; state<=s9;ends9: begin led_r=8'b11111000; state<=s10;ends10: begin led_r=8'b11110000; state<=s11;ends11: begin led_r=8'b11100000; state<=s12;ends12: begin led_r=8'b11000000; state<=s13;ends13: begin led_r=8'b10000000; state<=s14;ends14: begin led_r=8'b00000000; state<=s15;ends15: begin led_r=8'b10100101; state<=s0;enddefault: begin led_r=8'b11111111;state<=s0;endendcaseendendmodule16、超前进位加法器的Verilog HDL描述:module add_ahead (sum,cout,a,b,cin);input[7:0] a,b; input cin;output[7:0] sum;output cout;wire[7:0] G,P; wire[7:0] C,sum;assign G[0]=a[0]&b[0];assign P[0]=a[0]|b[0];assign C[0]=cin;assign sum[0]=G[0]^P[0]^C[0];assign G[1]=a[1]&b[1];assign P[1]=a[1]|b[1];assign C[1]=G[0]|(P[0]&cin);assign sum[0]=G[0]^P[0]^C[0];assign G[2]=a[2]&b[2];assign P[2]=a[2]|b[2];assign C[2]=G[1]|(P[1]&C[1]);assign sum[2]=G[2]^P[2]^C[2];assign G[3]=a[3]&b[3];assign P[3]=a[3]|b[3];assign C[3]=G[2]|(P[2]&C[2]);assign sum[3]=G[3]^P[3]^C[3];assign G[4]=a[4]&b[4];assign P[4]=a[4]|b[4];assign C[4]=G[3]|(P[3]&C[3]);assign sum[4]=G[2]^P[2]^C[2];assign G[5]=a[5]&b[5];assign P[5]=a[5]|b[5];assign C[5]=G[4]|(P[4]&C[4]);assign sum[5]=G[5]^P[5]^C[5];assign G[6]=a[6]&b[6];assign P[6]=a[6]|b[6];assign C[6]=G[5]|(P[5]&C[5]);assign sum[6]=G[6]^P[6]^C[6];assign G[7]=a[7]&b[7];assign P[7]=a[7]|b[7];assign C[7]=G[6]|(P[6]&C[6]);assign sum[7]=G[7]^P[7]^C[7];assign cout=G[7]|(P[7]&C[7]);endmodule17、课本227页:9.4 奇数分频与小数分频奇数分频的方法:用两个计数器,一个由输入时钟上升沿触发,一个由输入时钟下降沿触发,最后将两个计数器的输出相或,即可得到占空比为50%的方波波形。

相关文档
最新文档