牛客 verilog入门 VIP

1、输出1

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    output wire one
);

    assign one = 1'b1;
endmodule

2、wire连线

答案:

复制代码
`timescale 1ns/1ns

module wire0(
    input wire in0,
    output wire out1
);

assign out1 = in0;
endmodule

3、多wire连线

复制代码
`timescale 1ns/1ns

module top_module(
    input wire  a,
    input wire  b,

    output wire x,
    output wire y,
    output wire z
);

assign z = a;
assign x = b;
assign y = b;

endmodule

4、反相器

答案:

复制代码
`timescale 1ns/1ns

module top_module(
   	input in,
	output out 
);

assign out = ~in;
endmodule

5、与门

答案:

复制代码
`timescale 1ns/1ns
module top_module( 
    input a, 
    input b, 
    input c,
    output d );

    wire temp;

    and gate(temp, a, b);
    and gate(d, temp, c);
    
endmodule

6、NOR门

答案:

复制代码
`timescale 1ns/1ns

module top_module( 
    input a, 
    input b, 
    output c,
    output d);

    or gate(d, a, b);
    not gate(c, d);
endmodule

7、XOR门

答案:

复制代码
`timescale 1ns/1ns

module top_module( 
    input a, 
    input b, 
    output c );
    
assign c = a^b;
endmodule

8、逻辑运算

答案:

复制代码
`timescale 1ns/1ns

module top_module (
	input a,
	input b,
	input c,
	input d,
	output e,
	output f );
	
	wire out1, out2;
	assign out1 = a & b;
	assign out2 = c | d;
	assign f = out1 ^ out2;
	assign e = ~f;

endmodule

9、模拟逻辑芯片

答案:

复制代码
`timescale 1ns/1ns

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );

    wire out1, out2, out3, out4;
    assign out1 = p2a & p2b;
    assign out2 = p1a & p1c & p1b;
    assign out3 = p2c & p2d;
    assign out4 = p1f & p1e & p1d;

    assign p1y = out2 | out4;
    assign p2y = out1 | out3;
    
endmodule

10、逻辑运算2

答案:

复制代码
`timescale 1ns/1ns

module top_module (
	input a,
	input b,
	input c,
	input d,
	output e,
	output f );
	
	wire out1, out2, out3;
	assign out1 = a & b;
	assign out2 = c ^ d;
	assign out3 = out1 ^ out2;
	assign f = out3 | d;
	assign e = ~out3;

endmodule

11、多位信号

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input wire [2:0] in,
    output a,b,c
);
    assign a = in[2];
    assign b = in[1];
    assign c = in[0];

endmodule

12、信号顺序调整

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input [15:0] in,
    output out
);

    assign out = {in[3:0], in[7:4], in[11:8], in[15:11]};

endmodule

13、位运算与逻辑运算

答案:

复制代码
`timescale 1ns/1ns

module top_module(
	input [2:0] a, 
	input [2:0] b, 
	output [2:0] c,
	output d
);
	assign c = a | b;
	assign d = a || b;

endmodule

14、对信号按位操作

答案:

复制代码
`timescale 1ns/1ns

module top_module( 
    input [4:0] in,
    output out_and,
    output out_or,
    output out_xor
);
    assign out_and  = &in[4:0];
    assign out_or   = |in[4:0];
    assign out_xor  = ^in[4:0];
    
endmodule

15、信号级联合并

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input [4:0] a, b, c, d, e, f,
    output [7:0] w, x, y, z );

    wire [31:0] out;
    assign out = {a, b, c, d, e, f, {2'b11}};

    assign w = out[31:24];
    assign x = out[23:16];
    assign y = out[15:8];
    assign z = out[7:0];

endmodule

16、信号反转输出

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);

genvar i;
generate
    for(i = 0; i < 16; i = i + 1) begin
        assign out[i] = in[15-i];
    end
endgenerate

endmodule

17、三元操作符

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input [7:0] a, b, c, d,
    output [7:0] max);//
    
    wire [7:0] temp1, temp2;

    assign temp1 = (a > b)? a : b;
    assign temp2 = (temp1 > c)? temp1 : c;
    assign max = (temp2 > d)? temp2 : d;

endmodule

18、 多位信号xnor

答案:

复制代码
`timescale 1ns/1ns

module top_module(
    input a, b, c, d, e,
	output [24:0] out
);

wire [24:0] temp1, temp2;

assign temp1 = {{5{a}}, {5{b}}, {5{c}}, {5{d}}, {5{e}}};
assign temp2 ={5{a,b,c,d,e}};

assign out = ~(temp1 ^ temp2);

endmodule

19、五到一选择器

答案:

复制代码
`timescale 1ns/1ns

module top_module( 
    input [3:0] a, b, c, d, e, 
    input [2:0] sel,
    output reg [3:0] out );

    always @(*)begin
        out = (sel == 0)? a : (sel == 1)? b : (sel == 2)? c : (sel == 3)? d : (sel == 4)? e : 4'b0;
    end

endmodule

20、 256选1选择器

答案:

复制代码
`timescale 1ns/1ns

module top_module (
	input [255:0] in,
	input [7:0] sel,
	output  out
);

assign out = in[sel];

endmodule
相关推荐
FakeOccupational3 小时前
fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization
fpga开发
hahaha60166 小时前
ARINC818协议(六)
网络·fpga开发
深圳信迈科技DSP+ARM+FPGA6 小时前
基于ARM+FPGA+DSP的储能协调控制器解决方案,支持国产化
arm开发·fpga开发·信号处理
承接电子控制相关项目10 小时前
单片机与FPGA的核心差异、优缺点、编程差异、典型应用场景、选型等对比分析
单片机·嵌入式硬件·fpga开发
XINVRY-FPGA12 小时前
XCZU19EG-2FFVC1760I Xilinx赛灵思FPGA Zynq UltraScale+MPSoC
c++·嵌入式硬件·阿里云·fpga开发·云计算·硬件工程·fpga
kanhao1001 天前
为什么FPGA中一般不使用浮点数进行计算?
fpga开发
9527华安1 天前
国产紫光同创FPGA实现SDI视频编解码+图像缩放,基于HSSTHP高速接口,提供2套工程源码和技术支持
fpga开发·视频编解码·图像缩放·紫光同创·sdi·高速接口·hssthp
深圳信迈科技DSP+ARM+FPGA1 天前
基于龙芯 2K1000处理器和复旦微 FPGA K7 的全国产RapidIO 解决方案研究
嵌入式硬件·fpga开发·机器人·信号处理
睡觉然后上课1 天前
FPGA(现场可编程门阵列)笔记
笔记·嵌入式硬件·fpga开发