HDLBits 刷题(Verification: Writing Testbenches) 编写一个测试平台,创建一个模块dut实例(具有任何实例名称),并创建一个时钟信号来驱动模块clk输入。时钟的周期10ps。时钟应初始化为零,其第一次转换为0到1.编写一个实例化一个tff并重置T触发器然后将其切换到“1”状态的测试台。编写一个测试平台,实例化模块q7 并生成这些输入信号,如上图所示。
HDL Bits刷题(Verification: Reading Simulation) 它一个指示10种情况的一种是否被识别(有效),如果是,则检测到哪个键。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形以确定电路的作用,然后实现它。阅读仿真波形确定电路的作用,然后实现它。
HDLBits刷题(Building Larger Circuits) 之后,状态机断言其计数输出,以指示它正在计数。这应该等于1000个周期的延迟,然后1000个周期的延迟-1,以此类推,1000个周期的延迟是0。例如,一旦读取了1101和delay[3:0],电路就不再查看输入的数据,直到在所有其他事情都完成后才恢复搜索。此时,状态机必须断言done以通知用户计时器已超时,并等待直到输入ack为1,然后重置以查找开始序列(1101)的下一个出现。此时,电路必须断言done来通知用户计时器已经超时,并等待直到输入ack为1,然后重置以寻找开始序列(1101)的下一个出现。
Verilog HDL系统任务说明语句task 用两种不同的方法设计一个功能相同的模块,完成一个四个8位2进制输入数据冒泡排序。一种方法是组合逻辑实现,另一种是时钟触发任务实现,每个时钟周期完成一次数据交换。如果传给任务的变量和任务完成后接受任务的变量已定义,就可以用一条语句启动任务,任务完成以后控制传回启动的过程。1.2任务的调用及变量的传递。
简单的状态机设计——序列检测器 对串行输入的数据进行检测,检测“10010”。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定序列”。考虑码流为“1100100100001001001…对串行数据进行检测,检测到连续4个1 、5个1、6个1Z输出为高电平,连续7个或者7个以以上报错,即ERRO输出高电平。序列检测器是时序数字电路中非常常见的设计之一。它的逻辑功能是将一个指定的序列从数字码流中识别出来。
HDLBits刷题(Q8:Design a Mealy FSM ~Q2b:Another FSM) 3.2.5.20 Design a Mealy FSM问题陈述:Verilog代码:3.2.5.21 Q5a:Serial two’s complementer (Moore FSM)问题陈述:Verilog代码:3.2.5.22 Serial two’s complementer (Mealy FSM)问题陈述:Verilog代码:3.2.5.23 FSM问题陈述:Verilog代码:3.2.5.24 Q3b:FSM问题陈述:Verilog代码:3.2.5.25 Q3c:FSM log
HDLBits刷题(PS/2 packet parser~Sequence recognition) 现在,您有了一个状态机,它将识别PS/2字节流中的3字节消息,添加一个数据路径,它也将在接收到数据包时输出24位(3字节)消息(out_bytes[23:16]是第一个字节,out_bytes[15:8]是第二个字节,等等)。然而,在连续的字节流中,消息的开始和结束位置并不明显。唯一的指示是,每个三字节消息的第一个字节总是bit[3]=1(但其他两个字节的bit[3]可能是1或0,这取决于数据)。预期的用途是,应该给它输入位流,并在适当的时间重置,以便它计算每个字节中1位的数量。
HDLBits刷题(Design a Moore FSM~One-hot FSM) 除了行走和跌倒,旅鼠有时还会被告知做一些有用的事情,比如挖(当dig=1时,旅鼠开始挖)。如果旅鼠正在地面上行走(ground=1且没有下落),它可以挖洞,并会继续挖掘直到另一边(ground=0)。),然后当它再次着地时,继续朝原来的方向走。特别地,如果旅鼠下落超过20个时钟周期撞到地面,它会飞溅并停止行走、下落或挖掘(所有4个输出都变成0),直到永远(或直到FSM重置)。下落时被碰撞并不影响行走方向,在地面消失(但尚未下落)的同一周期中被碰撞,或在下落时地面再次出现,也不影响行走方向。
HDL Bits刷题(Simple FSM 1(asynchronous reset)~Simple FSM 3(Synchronous reset)) 下面是一输入一输出四个状态的摩尔状态机的状态转换表。下面是一输入一输出四个状态的摩尔状态机的状态转换表。使用以下 状态编码:A=2’b00,B=2’b01,C=2’b10,D=2’b11。下面是一输入一输出四个状态的摩尔状态机的状态转换表。下面是一输入一输出四个状态的摩尔状态机的状态转换表。这是一个摩尔状态机,有两个状态,一个输入,一个输出。这是一个摩尔状态机,有两个状态,一个输入,一个输出。这是一个摩尔状态机,有两个状态,一个输入,一个输出。这是一个摩尔状态机,有两个状态,一个输入,一个输出。
HDLBits刷题Day20(More Circuits) 在这个电路中,创建一个512单元系统(q[511: 0]),每个时钟周期前进一个时间步。假设边界(q[-1]和q[512])都为零(关闭)。在这个电路中,创建一个512单元系统(q[511:0]),每个时钟周期前进一个时间步。假设边界(q[-1]和q[512])都为零(关闭)。“游戏”是在二维空间上进行的,其中每个单元格不是1(活着)就是0(死去)。在每个时间步,每个单元的下一个状态是单元的两个当前邻居的。(“规则110”这个名字来自于阅读“下一个状态”列:01101110是十进制110。
HDLBits刷题 Day19(Shift Register) Q[7] 的触发器输出。电路的行为应该如下:当 ABC 为 000 时,Z=Q[0],当 ABC 为 001 时,Z=Q[1],依此类推。伽罗瓦 LFSR 是一种特殊的安排,其中带有“抽头”的位位置与输出位进行异或运算以产生其下一个值,而没有抽头移位的位位置。在这个问题中,您将为 8x1 存储器设计一个电路,其中写入存储器是通过移入位来完成的,而读取是“随机访问”,就像在典型的 RAM 中一样。考虑算术右移的另一种方法是,它假设被移动的数字是有符号的并保留符号,因此算术右移将带符号的数字除以 2 的幂。
HDLbits 刷题Day18(Counters) 从 1000 Hz 时钟导出一个称为OneHertz的 1 Hz 信号,该信号可用于驱动一组小时/分钟/秒计数器的启用信号,以创建数字挂钟。还要从您使用的每个 BCD 计数器输出使能信号(c_enable[0] 为最快的计数器,c_enable[2] 为最慢的)。您的计数器由快速运行的clk计时,只要您的时钟应该增加(即每秒一次),就会 在ena上显示一个脉冲。复位输入是同步的,应将计数器复位为 0。, **c_d[3:0]**控制信号进入提供的 4 位计数器,因此可以验证正确的操作。
HDLbits刷题Day17(Create circuit from truth table~ Dual-edge triggered flip-flop) 对于 8 位向量中的每一位,检测输入信号何时从一个时钟周期的 0 变为下一个时钟周期的 1(类似于上升沿检测)。对于 8 位向量中的每一位,检测输入信号何时从一个时钟周期的 0 变为下一个时钟周期的 1(类似于上升沿检测)。对于 32 位向量中的每一位,在输入信号从一个时钟周期的 1 变为下一个时钟周期的 0 时进行捕捉。每个输出位的行为类似于 SR 触发器:输出位应在 1 到 0 转换发生后的周期设置(为 1)。在下面的示例波形中,为清楚起见,reset、in[1] 和 out[1] 再次分别显示。
HDLBits刷题Day16(D flip-flop~DFFs and gates) 假设您要为此电路实现分层 Verilog 代码,使用其中具有触发器和多路复用器的子模块的三个实例化。当使用时钟控制的always 块时,逻辑合成器会创建 D 触发器AD触发器是“组合逻辑块后接触发器”的最简单形式,其中组合逻辑部分只是一条线。创建 8 个具有高电平有效同步复位的 D 触发器。为该电路的一个阶段编写一个名为 top_module 的 Verilog 模块,包括触发器和多路复用器。所有 DFF 都应由clk的上升沿触发。AD触发器是一种存储位并定期更新的电路,在时钟信号的(通常)上升沿。...
HDLBits刷题Day15(Karnaugh Map to Circuit) 具有四个输入(a、b、c、d)的单输出数字系统在输入上出现 2、7 或 15 时生成逻辑 1,当输入上出现 0、1、4、5、6 、9、10、13 或 14时生成逻辑 0 出现。例如,7 对应于 a、b、c、d 分别设置为 0、1、1、1。(存在仅使用 2 对 1 多路复用器的要求,因为原始考试问题还想测试使用 K-map 的逻辑函数简化以及如何仅使用多路复用器来合成逻辑函数。对于下面的卡诺图,给出使用一个 4 对 1 多路复用器和尽可能多的 2 对 1 多路复用器的电路实现,但使用尽可能少。
HDLBits刷题Day14 加法器将两个 3 位数字和一个进位相加以产生一个 3 位和并进位。您的加法器应该将两个 4 位 BCD 数字(打包成 16 位向量)和一个进位相加,以产生一个 4 位和并执行。假设您有两个 8 位 2 的补码,a[7:0] 和 b[7:0]。为您提供了一个名为bcd_fadd的 BCD(二进制编码的十进制)一位加法器,它将两个 BCD 数字和进位相加,并产生一个和和进位。~a[7]&& ~b[7] && s[7]:验证正正相加的符号溢出;a[7]&& b[7] &&~s[7]:验证负负相加的符号溢出。...
HDLBits刷题Day13 创建一个 4 位宽、256 对 1 的多路复用器。sel=0 应该选择[3:0]中的位, sel=1 选择[7:4]中的位, sel=2 选择[11:8]中的位等。创建一个 1 位宽、256 对 1 的多路复用器。sel=0 应该选择in[0], sel=1 选择[1]中的位, sel=2 选择[2]中的位,等等。sel=0 选择 a,sel=1 选择 b,等等。对于未使用的情况(sel=9 到 15),将所有输出位设置为“1”。当 sel=1 时,选择 b。当 sel=1 时,选择 b。...
HDLBits刷题Day12 out_both:此输出向量的每个位都应指示相应的输入位及其左侧的邻居(较高的索引)是否都是“1”。例如,out_both[2]应该表明in[2]和in[3]是否都为1。例如,out_diff[98]应该指示in[98]是否与in[99]不同。例如,out_diff[2]应该指示in[2]是否与in[3]不同。对于这部分,将向量视为环绕,因此in[3]左侧的邻居是in[0]。例如,out_any[2]应该指示in[2]或in[1]是否为1。例如,out_any[2]应该指示in[2]或in[1]是否为。..
HDLBits刷题Day11 3.1.1.8 Two-bit equality问题陈述:Verilog代码:3.1.1.9 Simple circuit A问题陈述:Verilog代码:这里是先让我们实例化模块A,再在顶层模块调用。3.1.1.10Simple circuit B问题陈述:Verilog代码:由图可知z为高电平时,x、y同为高电平或低电平,所以z输出为x、y的同或。3.1.1.11 Combine circuit A and B问题陈述:Verilog代码:...