
HDLBits
文章平均质量分 87
HDLBits学习
努力向前的小徐
这个作者很懒,什么都没留下…
展开
-
HDLBits学习------Problem 173~177(完结)
Problem 173Clock 问题:编写testbench产生一个驱动时钟信号,来驱动模块dut,时钟周期为10ps 解决:`timescale 1ps/1ps //仿真单位为1ps,精度为1psmodule top_module ( ); reg clk; dut dut_inst(clk); initial begin #0 clk = 0;//clk初始为0 end always #5 clk = ~clk;//每5个时钟单...原创 2021-11-24 19:07:00 · 531 阅读 · 0 评论 -
HDLBits学习------Problem 163~172
Problem 163Combinational circuit 1 问题:通过仿真波形实现电路 思路:通过波形可以看出来是一个与门解决:module top_module ( input a, input b, output q );// assign q = a & b; // Fix meendmodule 居然一开始看成了同或门Problem 1634 Combi...原创 2021-11-24 13:04:59 · 173 阅读 · 2 评论 -
HDLBits学习------Problem 158~162
参考连接:HDLBits导学Problem 158 Mux 问题:这个 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 解决:...原创 2021-11-23 23:53:47 · 444 阅读 · 0 评论 -
HDLBits学习------Problem 151~157
参考链接:HDLBits导学Problem 151 Counter with period 1000 问题:构建一个从 0 到 999(包括 0 到 999)计数的计数器,周期为 1000 个周期。复位输入是同步的,应将计数器复位为 0 解决:module top_module ( input clk, input reset, output [9:0] q); always @(posedge clk) begin if(...原创 2021-11-23 17:41:28 · 690 阅读 · 0 评论 -
HDLBits学习------Problem 138~150
参考链接:HDLBits导学Problem 138Q8: Design a Mealy FSM 问题:实现一个Mealy类型的有限状态机,识别序列“101”,输入信号为x 。您的 FSM 应该有一个输出信号z,当检测到“101”序列时,该信号输出逻辑 1。您的 FSM 还应该有一个低电平有效的异步复位。您的状态机中可能只有 3 个状态。您的 FSM 应该识别重叠序列 解决:module top_module ( input clk, input...原创 2021-11-22 19:33:57 · 629 阅读 · 0 评论 -
HDLBits学习------Problem 131~137
参考链接:HDLBits导学Problem 131One-hot FSM / Fsm onehot 问题:下图是具有1个输入和2个输出的状态转移图:假设该状态机使用独热码,state[0]到state[9]分别对应于状态S0到S9。图中没有标注的输出均为0。下面请实现状态机的状态转移逻辑和输出逻辑(不需要实现状态触发器)。 模块的输入是当前状态state[9:0],输出下个状态next_state[9:0]和电路的两个输出out1和out2...原创 2021-11-22 00:12:07 · 552 阅读 · 0 评论 -
HDLBits学习------Problem 127~130
参考链接:HDLBits导学Problem 127 Lemmings1 问题:游戏旅鼠涉及到有非常简单的大脑的生物,我们将会使用有限状态机(FSM)对其建模。在旅鼠的2D世界中,旅鼠只有两种状态:向左走和向右走。当它遇到一个障碍物的时候,会转变方向。特别是,如果旅鼠被左侧撞到,它将会向右走,被右侧撞到,将会向左走。如果被两侧撞到,它依然会转换方向。用两状态,两输入,一输出的摩尔型状态机对其行为建模 解决:module top_module( ...原创 2021-11-21 12:59:55 · 434 阅读 · 0 评论 -
HDLBits学习------Problem 118~126
参考链接:HDLBits导学Problem 118 Simple FSM1 / Fsm1 问题:图中是一个有两个状态的摩尔型状态机。有一个输入信号与一个输出信号。本题中需要实现图中的状态机,注意复位后状态为 B,复位采用异步复位 思路:三段式状态机,详细解释参考上面链接三段式分别指状态跳转逻辑 状态触发器实现 输出逻辑解决:module top_module( input clk, input areset, ...原创 2021-11-21 00:17:08 · 546 阅读 · 0 评论 -
HDLBits学习------Problem 115~117
参考链接:HDLBits导学Problem 115 Rule90 问题:Rule90 是一道根据一些有趣的规则来生成一维序列的题目。规则很简单。一维序列中元素有 1,0 两种状态,分别对应开,关状态。在每个时钟边沿到来时刻,元素的下一个状态为元素相邻两个元素的异或。下表更详细地给出了跳变的规则,(可以视为状态转移表),元素下一个状态可以视作输出,输入为元素本身的状态与相应两个相邻元素的当前状态对于需要实现的电路,创建一个拥有 512 个元素的序列 ...原创 2021-11-20 15:02:40 · 642 阅读 · 0 评论 -
HDLBits学习------Problem 106~114
参考链接:HDLBits导学Problem 106 4-bit shift register 问题:设计一个4bit异步复位,拥有同步置位和使能的右移移位寄存器。areset : 寄存器复位为0 load : 将data[3:0]输入至移位寄存器中 ena : 使能信号控制向右移动(q[3]q[2]q[1]q[0] ---> 0q[3]q[2]q[1],q[0]在移动后消失了,原先q[3]的位置变为0) q : 移位寄存器中的数据如果ena和load同时为高,load...原创 2021-11-19 19:39:52 · 634 阅读 · 0 评论 -
HDLBits学习------Problem 98~105
参考链接:HDLBits导学Problem 98 Four-bit binary counter 问题:设计一个4bit的计数器,从0~15,共16个周期。reset是同步复位且复位为0 解决:module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always @(posedge clk)...原创 2021-11-18 22:01:49 · 714 阅读 · 0 评论 -
HDLBits学习------Problem 36~42
参考链接:HDLBits导学Problem 36: Conditional ternary operator(Conditional) 概述:Verilog跟C语言一样有一个三元运算符( ? : )condition ? if_true : if_false问题:给出四个无符号数,请找到其中的最小值。无符号数可以使用比较运算符进行比较(a<b)。使用条件运算符描述一个两路的最小值电路,然后组合它来创建一个4路最小电路。 可能需要一些wire变量用于表述中...原创 2021-11-15 16:42:40 · 285 阅读 · 0 评论 -
HDLBits学习------Problem 43~59
参考链接:HDLBits导学Problem 43 Wire 问题:实现如下电路 解决:module top_module ( input in, output out); assign out = in;endmoduleProblem 44 GND 问题:实现如下电路 解决:module top_module ( output out);assign out = 0;...原创 2021-11-15 21:23:44 · 511 阅读 · 0 评论 -
HDLBits学习------Problem 19~27
参考链接:HDLBits导学Problem 19 : Modules 问题:在顶层模块中例化下面的模块 思路:例化有两种方式解决:module top_module ( input a, input b, output out );mod_a( .in1(a), .in2(b), .out(out));endmodule...原创 2021-11-12 12:34:58 · 443 阅读 · 0 评论 -
HDLBits学习------Problem 60~64
参考链接:HDLBits导学Problem 60 : 2-to-1 multiplexer (Mux2to1) 问题:本题中需要实现一个 2 选 1 选择器,sel 信号作为选择信号,当 sel = 1 时选择 b,反之选择 a 解决:module top_module( input a, b, sel, output out ); assign out = sel ? b : a;endmoduleProblem 61 : 2...原创 2021-11-16 19:14:57 · 782 阅读 · 0 评论 -
HDLBits学习------Problem 28~35
参考链接:HDLBits导学Problem 28: Always blocks(combinational) (Alwaysblock1) 问题:使用assign语句和组合always块来构建与门 解决:// synthesis verilog_input_version verilog_2001module top_module( input a, input b, output wire out_assign, ...原创 2021-11-14 09:47:24 · 241 阅读 · 0 评论 -
HDLBits学习------Problem 10~18
参考连接:HDLBits导学Problem 10 : Vectors 概述:什么是 Verilog 中的向量(vector)?向量是一组 wire 信号的集合,通过赋予这一组信号的集合一个名称,以便于访问其中的 wire 信号。向量类似于总线,一般将向量视为位宽超过 1 位的 wire 信号,不是特别在意向量这个概念本身。 问题:构造一个电路,拥有 1 个 3 bit 位宽的输入端口,4 个输出端口。其中一个输出端口直接输出输入的向量,剩下 3 个输出端口分别各自...原创 2021-11-11 15:39:38 · 289 阅读 · 0 评论 -
HDLBits学习------Problem 80~97
参考链接:HDLBits导学Problem 80 : D flip-flop (Dff) 问题:实现一个D触发器 解决:module top_module ( input clk, // Clocks are used in sequential circuits input d, output reg q );// // Use a clocked always block // copy d to q ...原创 2021-11-17 13:11:00 · 654 阅读 · 0 评论 -
HDLBits学习------Problem 72~79
参考链接:HDLBits导学Problem 72 3-variable 问题:根据卡诺题来实现电路: 思路:使用卡洛图得到表达式第一个方框中,只有b的值保持不变且为1,所以这个框化简出来是b第二个方框中,只有c的值都保持不变且为1,所以这个框化简出来是c第三个方框中,只有a的值保持不变且为1,所以这个框化简出来是a最后三个表达式加起来就是最后的表达式,转换到verilog中就是或‘|’的关系解决:module...原创 2021-11-17 00:14:10 · 406 阅读 · 0 评论 -
HDLBits学习------Problem 65~71
参考链接:HDLBits导学Problem 65 : Half adder (Hadd) 问题:本题中需要实现一个 2 进制 1bit 加法器,加法器将输入的两个 1bit 数相加,产生两数相加之和以及进位 思路:参考全加器的写法 解决:module top_module( input a, b, output cout, sum ); assign sum = a ^ b;assign cout = a &...原创 2021-11-16 22:13:58 · 292 阅读 · 0 评论 -
HDLBits学习------Problem 1~9
参考连接:HDLBits导学Problem 1 :Zero 问题:没有输入,输出0 解决:module top_module( output zero);// Module body starts after semicolon assign zero = 0;endmoduleProblem 2 :Wire 问题:使用wire让输出等于输入 解决:module top_module( input...原创 2021-11-11 13:31:13 · 251 阅读 · 0 评论