自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 HDLBits 答案之 vectorgates

HDLBits 答案

2022-01-28 21:21:03 419

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除