- 博客(22)
- 收藏
- 关注
原创 System Verilog 中的include 和 import区别
1. import 和 include 都可以调用;2. include 能把class 封装在一个package里面先写一个class的sv文件class A;int a;endclass然后写一个class,注意include要加一个‘,然后得把sv加进去,还要写双引号。package B;'include ''A.sv'';endpackage:B3. import 比include高级一点,一个package可以调用另一个packge中的class, 但要例化一下
2022-04-04 12:30:38
2677
原创 HDLBits 答案之Fsm serialdata
纯菜鸟,最傻瓜的办法写的...各位谨慎采纳。module top_module( input clk, input in, input reset, // Synchronous reset output [7:0] out_byte, output done); // parameter idle=10,s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8,sp=9,fd=11; reg [3:0]
2022-03-09 20:53:30
294
原创 HDLBits 答案之 Fsm ps2data
多加一个数据路径。先用三个寄存器寄存一下输入,然后assign组合一下。module top_module( input clk, input [7:0] in, input reset, // Synchronous reset output [23:0] out_bytes, output done); // parameter b1=0,b2=1,b3=2,d=3; reg [1:0] state,nstate; reg [
2022-03-09 14:56:43
337
原创 HDLBits 答案之Lemmings2
答案如下,唯一强调一下,module top_module( input clk, input areset, // Freshly brainwashed Lemmings walk left. input bump_left, input bump_right, input ground, output walk_left, output walk_right, output aaah ); parameter le
2022-03-08 11:53:41
202
原创 HDLBits 答案之Fsm1s(同步复位)
与异步复位相似,触发条件的区别。// Note the Verilog-1995 module declaration syntax here:module top_module(clk, reset, in, out); input clk; input reset; // Synchronous reset to state B input in; output out;// reg out; // Fill in state name
2022-03-05 22:15:43
449
原创 HDLBits答案之Fsm1
看题目,该状态机是摩尔机,也就是输出与输入无关,仅仅与所在的状态有关。因此输出会在一个完整的时钟周期内保持稳定,即使此时输入信号有变化,输出也不会变化。输入对输出的影响要到下一个时钟周期才能反映出来。这也是 Moore 型状态机的一个重要特点:输入与输出是隔离开来的。这也就说明,输出表达(第三段)时得用组合逻辑,而不是时序逻辑。module top_module( input clk, input areset, // Asynchronous reset to state B
2022-03-05 21:45:28
443
原创 HDLBits 答案之rule90
答案如下,谷歌翻译成中文会有一定偏差,建议阅读原文题目module top_module( input clk, input load, input [511:0] data, output [511:0] q ); always @(posedge clk) begin if (load) q<=data; else begin for (int i=1;i<5
2022-03-05 13:08:46
389
原创 HDLBits 之Count clock
这题目可以将hh,mm和ss 分开写,易于操作。这题目使用16进制,我们人为的逢10进1,每一位占用4个Bits。这题目用10进制也可以。此外,Pm仅仅在11h59m59s时候翻转,重置时为12h00m00s, 12h59m59s时变成1h00m00s.这点是题目比较怪的地方,与我们日常认知的时钟有一定区别。module top_module( input clk, input reset, input ena, output pm, output [.
2022-03-02 00:04:08
247
原创 HDLBits 答案之 Countbcd
答案如下:module top_module ( input clk, input reset, // Synchronous active-high reset output [3:1] ena, output [15:0] q); wire a=1'b1; assign ena[1]=(q[3:0]==4'd9); assign ena[2]=ena[1]&(q[7:4]==4'd9); assign ena[3]=e
2022-02-26 13:48:04
292
原创 HDLBits 答案之Exams/ece241 2014 q7b
答案如下: module top_module ( input clk, input reset, output OneHertz, output [2:0] c_enable); wire[3:0] q0, q1, q2;//q1,q2,q3分别代表个位,十位,百位的计数器输出 assign c_enable[0]=1'b1;//个位计数器始终在运行,因此使能信号始终运行 assign c_enable[1]=c_e
2022-02-26 13:06:18
1548
2
原创 HDLBits 答案之Edgecapture
这题还是很巧妙的。首先用了两个always 块,使得输入值在下一个时钟赋给中间值,并且这一操作不会跟Reset always块起冲突。 其次,将检测信号与输出信号相或,得以使输出信号一直维持下去,而不会因为检测信号消失而消失。module top_module ( input clk, input reset, input [31:0] in, output [31:0] out); reg [31:0]in1; always @(posedge c.
2022-02-23 21:44:32
535
原创 HDLBits答案之 Mux256to1
Verilog向量位可以识别二进制,自动将二进制转化为十进制,从而判断是哪一位向量。答案如下:module top_module( input [255:0] in, input [7:0] sel, output out ); assign out=in[sel]; endmodule...
2022-02-19 16:20:33
342
原创 HDLBits 答案之Truthtable1
题目的意思是:所有门电路可以写成最小项之和(乘积和)的形式:1. 找出所有输出为1的那一行;2. 将1中(输入为1的项)和(输入为0的项的非)相与;3. 将2中的结果相或。代码如下:module top_module( input x3, input x2, input x1, // three inputs output f // one output); assign f=(~x3&x2&~x1)|(~x3&
2022-02-19 11:44:19
696
原创 HDLBits 之Bcdadd100
答案如下:module top_module( input [399:0] a, b, input cin, output cout, output [399:0] sum ); wire [99:0] cout_mid; //中间变量,每位向量值固定所以不需要寄存 bcd_fadd add1( .a(a[3:0]) , .b(b[3:0]) , .cin(cin), .cout(cou
2022-02-18 20:53:07
586
原创 HDLBits答案之Adder100i
module top_module( input [99:0] a, b, input cin, output [99:0] cout, output [99:0] sum ); assign sum[0] = a[0]^b[0]^cin; assign cout[0] = a[0]&b[0] | (cin&(a[0]|b[0])); always @(*) begin for (int i=1; i .
2022-02-17 22:32:22
543
原创 HDLBits 答案之Vector100r
答案如下:module top_module ( input [99:0] in, output reg [99:0] out); always @(*) begin for (int i=0;i<$bits(out);i++) // $bits() is a system function that returns the width of a signal. out[i] = in[$bits(out)-i-1]; end endmodule...
2022-02-17 21:10:29
421
原创 HDLBits 之 Module addsub
答案如下:module top_module( input [31:0] a, input [31:0] b, input sub, output [31:0] sum); wire [31:0]b1; wire cout1,cout2; wire [15:0] sum1,sum2; assign b1 = {32{sub}}^b ; add16 add_lower( .a(a[15:0]), .b(b1[15:
2022-02-13 19:14:09
166
原创 HDLBits答案之Module cseladd
答案:module top_module( input [31:0] a, input [31:0] b, output [31:0] sum); wire cin1,cin0; reg [15:0] sum1,sum2,sum3; reg cout1; reg [31:0]sum0; assign cin1 = 1'b1 ; assign cin0 = 1'b0 ; add16 instance_lower
2022-02-11 21:06:32
169
原创 HDLBits 答案之 Module Fadd
先说答案:module top_module ( input [31:0] a, input [31:0] b, output [31:0] sum);// wire temp1; add16 instance_lower( .a(a[15:0]), .b(b[15:0]), .cin(), .sum(sum[15:0]), .cout(temp1) ); add16 instance_upper( .a(a[31:16]), .b(b[31:16]
2022-01-31 00:45:55
1236
原创 HDLBits 答案之 Vector3
代码如下:module top_module ( input [4:0] a, b, c, d, e, f, output [7:0] w, x, y, z );// assign {w[7:0],x[7:0],y[7:0],z[7:0]} = {a[4:0],b[4:0],c[4:0],d[4:0],e[4:0],f[4:0],1'b1,1'b1}; // assign { w,x,y,z } = {a,b,c,d,e,f,2'b11 };endmodule
2022-01-28 22:00:53
510
原创 HDLBits 答案之 Gates4
答案如下:module top_module( input [3:0] in, output out_and, output out_or, output out_xor); assign out_and = in[0] & in[1] & in[2] & in[3] ; assign out_or = in[0] | in[1] | in[2] | in[3] ; assign out_xor = in[0] ^
2022-01-28 21:34:31
662
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人