
Verilog HDL
文章平均质量分 87
Alice的博客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FPGA的秒表设计案例(verilog实现)
秒表设计案例案例1:秒表0案例2:秒表1案例3:秒表2案例1:秒表0实现功能:1位数码管实现0~9计数。实验现象:第1秒: 1位数码管显示0,第2秒: 1位数码管显示1,第3秒: 1位数码管显示2,第4秒: 1位数码管显示3,第5秒: 1位数码管显示4,第6秒: 1位数码管显示5,第7秒: 1位数码管显示6,第8秒: 1位数码管显示7,第9秒: 1位数码管显示8,第10秒: 1位数码管显示9,……10s一个周期,重复进入下一次循环。代码实现://秒表模块,0~9计数mod原创 2021-10-22 16:38:29 · 7244 阅读 · 0 评论 -
FPGA的呼吸灯设计案例(verilog实现)
呼吸灯设计案例案例1:呼吸灯0案例2:呼吸灯1案例3:呼吸灯2案例1:呼吸灯0实现功能:4个LED同时改变,亮度由PWM信号控制。实验现象:4个LED,灭→亮,逐渐变亮,到达最亮后熄灭,再从灭→亮,重复进入下一次循环。代码实现:module pwm( input clk, input rst_n, output reg [3:0] led);reg [15:0] pwm0,count;always @(posedge clk or negedge r原创 2021-10-21 16:29:01 · 4655 阅读 · 0 评论 -
HDLBits练习答案汇总
HDLBits习题总结Verilog LanguageCircuitsCombinational LogicSequential LogicFinite State MachinesVerification: Reading Simulations习题网站: HDLBits.Verilog LanguageBasicsVectorsModules: HierarchyProceduresMore Verilog FeaturesCircuitsCombinational LogicBas原创 2021-10-14 14:22:59 · 6443 阅读 · 0 评论 -
HDLBits第十八章练习及答案
编写测试平台1、时钟2、测试平台13、与门4、测试平台25、T 触发器1、时钟您将获得一个具有以下声明的模块:module dut ( input clk ) ;编写一个测试平台来创建模块dut 的一个实例(具有任何实例名称),并创建一个时钟信号来驱动模块的clk输入。时钟周期为 10 ps。时钟应初始化为零,其第一次转换为 0 到 1。代码实现:module top_module ( ); reg clk; initial begin c原创 2021-10-14 13:47:44 · 1052 阅读 · 0 评论 -
HDLBits第十七章练习及答案
从仿真波形构建电路1、组合电路12、组合电路23、组合电路34、组合电路45、组合电路56、组合电路67、时序电路78、时序电路89、时序电路910、时序电路101、组合电路1实现下图所示的组合电路。代码实现:module top_module ( input a, input b, output q );// assign q = a & b; // Fix meendmodule验证结果:2、组合电路2实现下图所示的组合电路。提示:原创 2021-10-14 11:11:28 · 604 阅读 · 0 评论 -
HDLBits第十六章练习及答案
发现代码中的错误1、多路选择器2、NAND3、多路选择器14、加/减法器5、案例说明1、多路选择器这个 8 位宽的 2 对 1 多路选择器不起作用。修复错误。原始代码:module top_module ( input sel, input [7:0] a, input [7:0] b, output out ); assign out = (~sel & a) | (sel & b);endmodule修正后代码:module原创 2021-10-14 09:18:24 · 814 阅读 · 0 评论 -
HDLBits第十五章练习及答案
构建更大的电路1、周期为1000的计数器2、四位移位寄存器和递减计数器3、FSM 序列1101识别器4、FSM:使能移位寄存器5、FSM:完整的FSM6、完整的计时器7、FSM:One hot 逻辑方程1、周期为1000的计数器构建一个从 0 到 999(包括 0 到 999)计数的计数器,周期为 1000 个周期。复位输入是同步的,应将计数器复位为 0。代码实现:module top_module ( input clk, input reset, output [9:0原创 2021-10-13 11:10:03 · 1489 阅读 · 0 评论 -
HDLBits第十四章练习及答案4
有限状态机21、Q8:设计一个Mealy FSM22、Q5a:串行二进制补码器(Moor FSM)23、Q5b:串行二进制补码器(Mealy FSM)24、Q3a:FSM25、Q3b:FSM26、Q3c:FSM 逻辑27、Q6b:FSM 下一状态逻辑28、Q6c:FSM one-hot 下一状态逻辑29、Q6:FSM30、Q2a:FSM31、Q2b:One hot FSM方程32、Q2a:FSM33、Q2b:另一个FSM21、Q8:设计一个Mealy FSM米利型状态机检测输入的X中”101“是否原创 2021-10-12 17:40:08 · 1570 阅读 · 0 评论 -
HDLBits第十四章练习及答案3
有限状态机15、PS/2数据包解析器16、PS/2数据包解析器和数据路径17、串行接收器18、串行接收器和数据通路19、带奇偶校验的串行接收器20、序列识别15、PS/2数据包解析器PS/2 鼠标协议发送三个字节长的消息。但是,在连续的字节流中,消息的开始和结束位置并不明显。唯一的指示是每个三字节消息的第一个字节总是有bit[3]=1(但其他两个字节的 bit[3] 可能是 1 或 0,具体取决于数据)。我们需要一个有限状态机,当给定输入字节流时,它会搜索消息边界。我们将使用的算法是丢弃字节,直到我们原创 2021-10-11 15:14:20 · 1230 阅读 · 0 评论 -
HDLBits第十四章练习及答案2
有限状态机10、旅鼠111、旅鼠212、旅鼠313、旅鼠414、One-hot FSM10、旅鼠1在旅鼠的 2D 世界中,旅鼠可以处于两种状态之一:向左走或向右走。如果碰到障碍物,它会改变方向。特别是,如果旅鼠在左边被撞到,它会向右走。如果它在右边被撞到,它会向左走。如果它同时在两侧碰撞,它仍然会转换方向。实现一个具有两个状态、两个输入和一个输出的摩尔状态机来模拟这种行为。提示:代码实现:module top_module( input clk, input areset,原创 2021-10-09 15:58:33 · 1427 阅读 · 0 评论 -
HDLBits第十四章练习及答案1
有限状态机1、简单 FSM1(异步复位)2、简单 FSM1(同步复位)3、简单 FSM2(异步复位)4、简单 FSM2(同步复位)5、简单的状态转换36、简单的one-hot状态转换37、简单 FSM3(异步复位)8、简单 FSM3(同步复位)9、设计摩尔状态机1、简单 FSM1(异步复位)实现下图所示的摩尔状态机,复位为异步复位。代码实现:module top_module( input clk, input areset, // Asynchronous reset to原创 2021-10-07 15:58:14 · 1652 阅读 · 0 评论 -
HDLBits第十三章练习及答案
时序逻辑4:更多电路1、Rule 901、Rule 90各单元的下一状态是此时当前单元相邻两位的异或。在这个电路中,创建一个512单元系统(q(511:0)),并在每个时钟周期中前进一个时间步长。加载(load)表明系统的状态应该加载data[511:0]至q中,假设边界(q[0]和q[512])都为零。LeftCenterRightCenter’s next state1110110110101001011111原创 2021-10-07 14:01:19 · 836 阅读 · 0 评论 -
HDLBits第十二章练习及答案
时序逻辑3:移位寄存器1、 4 位移位寄存器2、左/右旋转器3、算术移位寄存器4、5位线性反馈移位寄存器5、3位线性反馈移位寄存器6、32位线性反馈移位寄存器7、移位寄存器18、移位寄存器29、3 输入查找表 (LUT)1、 4 位移位寄存器构建一个4bit的移位寄存器(右移),含异步复位、同步加载和使能areset:让寄存器复位为0load:加载4bit数据到移位寄存器中,不移位ena:使能右移q:移位寄存器中的内容代码实现:module top_module( input c原创 2021-09-25 14:30:41 · 1492 阅读 · 0 评论 -
HDLBits第十一章练习及答案
时序逻辑2:计数器1、四位二进制计数器1、四位二进制计数器构建一个从0到15的4位二进制计数器,周期为16。同步复位,复位应该将计数器重置为0。原创 2021-09-23 16:59:14 · 2405 阅读 · 0 评论 -
HDLBits第十章练习及答案
时序逻辑1:锁存器和触发器1、D触发器2、8个D触发器3、带复位的D触发器1、D触发器定义:D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。在这里解释边沿触发的D触发器,D触发器在时钟脉冲CP的前沿(正跳变0→1)发生翻转,触发器的次态(下一个状态)取决于CP的脉冲上升沿到来之前D端的状态,即次态Q=D。因此,它具有置0、置1两种功能。由于在CP=1期间电路具有维持阻塞作用(即触发器原创 2021-09-22 13:36:33 · 2419 阅读 · 0 评论 -
HDLBits第九章练习及答案
卡诺图到电路1、三变量2、四变量13、四变量24、四变量35、最小SOP式和POS式6、卡诺图17、卡诺图28、用多路选择器实现卡诺图1、三变量实现下面卡诺图所描述的电路。代码实现:module top_module( input a, input b, input c, output out ); assign out = a | ((~a) & c) | ((~a) & b);endmodule验证结果:2、四变原创 2021-09-19 10:54:04 · 1531 阅读 · 2 评论 -
HDLBits第八章练习及答案
组合逻辑电路3:算术电路1、半加器2、全加器3、3位二进制加法器4、加法器5、有符号加法溢出6、100位二进制加法器7、4位BCD加法器1、半加器拓展:半加器用于计算2个单比特二进制数a与b的和,输出结果sum(s)和进位carry(c)。在多比特数的计算中,进位c将作为下一相邻比特的加法运算中。其真值表如下所示。练习:创建一个半加器,半加器将两位相加(没有进位)并产生一个和并进位。代码实现:module top_module( input a, b, output cou原创 2021-09-18 15:01:18 · 1761 阅读 · 0 评论 -
Verilog HDL语法篇1
Verilog HDL基础知识一、Verilog HDL简介1、什么是HDL?2、什么是Verilog?3、Verilog基础二、数据类型1、寄存器类型2、线网类型3、参数类型三、运算符1、算术运算符2、关系运算符3、逻辑运算符4、条件运算符5、位运算符6、移位运算符7、拼接运算符一、Verilog HDL简介1、什么是HDL?数字系统设计的流程:#mermaid-svg-2sctauW5Oy4TUwa8 .label{font-family:'trebuchet ms', verdana, ari原创 2021-09-18 13:53:25 · 572 阅读 · 0 评论 -
HDLBits第七章练习及答案
组合逻辑电路2:多路复用器1、2对1多路选择器2、2对1总线多路选择器3、9 对 1 多路选择器4、256对1多路选择器5、256对1的4位多路选择器1、2对1多路选择器拓展:多路选择器(Multiplexer)简称多路器,它是一个多输入、单输出的组合逻辑电路,在数字系统中有着广泛的应用。它可以根据地址码(选择码)的不同,从多个输入数据流中选取一个,让其输出到公共的输出端。练习:创建一个 1 位宽的 2 对 1 多路选择器。当sel=0时,选择a。当 sel=1 时,选择 b。代码实现:mod原创 2021-09-17 19:27:17 · 1651 阅读 · 1 评论 -
HDLBits第六章练习及答案
组合逻辑电路1:基本门电路1、线2、地3、或非门4、另一个门5、两门6、更多逻辑门7、7420芯片8、真值表9、两位相等10、简单电路A11、简单电路B12、组合电路A和B13、响铃还是振动?14、恒温器15、三位计数器16、门和向量17、更长的向量1、线实现以下电路:代码实现:module top_module ( input in, output out); assign out = in; endmodule验证结果:2、地实现以下电路:代原创 2021-09-17 14:08:11 · 2363 阅读 · 1 评论 -
HDLBits第五章练习及答案
HDLBits第五章1、三元条件运算符2、归约运算符3、归约:更宽的门4、组合for循环:向量反转25、组合for循环:255位总体计数6、生成for循环:100位二进制加法器27、生成for循环:100位BCD加法器1、三元条件运算符verilog 有一个三元条件运算符 ( ? : ) ,像 C语言一样。(condition ? if_true : if_false)这可用于根据一行上的条件(多路复用器!)选择两个值之一,而无需在组合 always 块中使用 if-then。例如:(0 ?原创 2021-09-15 18:03:09 · 1931 阅读 · 0 评论 -
HDLBits第四章练习及答案
HDLBits第四章1、Always块1(组合)2、Always块2(时钟)3、if 语句4、if 语句锁存5、case 语句6、优先级编码器7、带casez的优先编码器8、避免锁存1、Always块1(组合)由于数字电路是由用导线连接的逻辑门组成的,因此任何电路都可以表示为模块和赋值语句的某种组合。然而,有时这并不是描述电路的最方便的方式。过程(其中always块是一个示例)提供了一种用于描述电路的替代语法。对于综合硬件,有两种类型的 always 块是相关的:(1)组合:always @(*)原创 2021-09-14 19:01:32 · 2414 阅读 · 0 评论 -
HDLBits第三章练习及答案
HDLBits第三章1、模块(Module)到目前为止,您已经熟悉了 a module,它是一个通过输入和输出端口与其外部交互的电路。更大、更复杂的电路是通过将更小的模块和连接在一起的其他部分(例如assign语句和always块)组成更大的模块来构建的。这形成了一个层次结构,因为模块可以包含其他模块的实例。下图显示了一个非常简单的带有子模块的电路。在这个练习中,创建一个实例模块mod_a,模块的三个引脚(连接in1,in2和out)到顶层模块的三个端口(电线a,b和out)。该模块mod_a是为您提原创 2021-09-13 16:24:16 · 4028 阅读 · 0 评论 -
HDLBits第二章练习及答案
HDLBits第二章向量0(Vector0)矢量用于使用一个名称对相关信号进行分组,以便更方便地操作。例如,wire [7:0] w; 声明了一个名为w的 8 位向量,它在功能上等同于具有 8 条单独的线。请注意,向量的声明将维度放在向量名称之前,这与 C 语法相比是不寻常的。然而,部分选择了尺寸后,如你所期望的矢量名称。wire [99:0] my_vector; // Declare a 100-element vectorassign out = my_vector[10];原创 2021-09-11 15:35:45 · 3041 阅读 · 0 评论 -
HDLBits第一章练习及答案
HDLBits第一章线(Wire)创建一个具有一个输入和一个输出的模块,其行为类似于电线。与物理线不同,Verilog 中的线(和其他信号)是有方向的。仅在一个方向上的该装置的信息流,从(一般是一个)源到汇(源极还通常称为驱动器即驱动器的值到一个线)。在 Verilog 的“连续赋值”( assign left_side = right_side;) 中,右侧的信号值被驱动到左侧的导线上。赋值是“连续的”,因为即使右侧的值发生变化,赋值也会一直继续。连续分配不是一次性事件。模块上的端口也有一个方原创 2021-09-11 09:55:58 · 2984 阅读 · 0 评论