用VerilogHDL 写一个A算术逻辑运算器ALU

算术逻辑运算单元 ALU 是计算机组成中不可缺少的部件,CPU 指令系统中运算类指令都由 ALU 来支持。
要求设计一个具有 3 种算术运算和 3种逻辑运算的 8 位 ALU,完成它的上板验证。
主要就是代码的问题 没学过Verilog 不知道要咋写这个东西

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
VerilogHDL设计一个四位简单计数器

使用VerilogHDL设计一个四位简单计数器,要求PS2键盘输入,四位数码管显示运算结果,且可以下载在BASYS2板子上验证。。。有案例可以参考一下吗

用Verilog HDL写一个单周期MIPS Processor但是有问题。不知道是哪里写的不对?

标签里没有Verilog很尴尬。。。用Verilog写一个Single Cycle Processor,主模块是processor。小模块有: datapath, controller, ALUController, data memory, instruction memory, register file,ALU, FlipFlop, ImmGen。一共九个小模块。这些模块我都写出来了,但是找不到错误在哪里,希望有人帮下忙。其实是很基础的东西,但是工作量会比较大所以悬赏也会比较多。可以确定没有问题的模块有Datapath,Controller,ALUController。顺便说下我用的是Vivado 大体的设计图如下: ![图片说明](https://img-ask.csdn.net/upload/202003/16/1584305382_367150.png) 还有:![图片说明](https://img-ask.csdn.net/upload/202003/16/1584305785_91164.png) processor的testbench如下 ``` `timescale 1ns / 1ps module tb_processor (); /** Clock & reset **/ reg clk , rst ; wire [31:0] tb_Result; processor processor_inst( .clk (clk), .reset (rst), .Result (tb_Result) ); always begin #10; clk = ~clk; end initial begin clk = 0; @( posedge clk ); rst = 1; @( posedge clk ); rst = 0; end integer point =0; always @(*) begin #20; if (tb_Result == 32'h00000000) // and begin point = point + 1; end #20; if (tb_Result == 32'h00000001) // addi begin point = point + 1; end #20; if (tb_Result == 32'h00000002) // addi begin point = point + 1; end #20; if (tb_Result == 32'h00000004) // addi begin point = point + 1; end; #20; if (tb_Result == 32'h00000005) // addi begin point = point + 1; end; #20; if (tb_Result == 32'h00000007) // addi begin point = point + 1; end #20; if (tb_Result == 32'h00000008) //addi begin point = point + 1; end # 20; if (tb_Result == 32'h0000000b)// addi begin point = point + 1; end # 20; if (tb_Result == 32'h00000003) // add begin point = point + 1; end # 20; if (tb_Result == 32'hfffffffe) // sub begin point = point + 1; end; # 20; if (tb_Result == 32'h00000000) // and begin point = point + 1; end; # 20; if (tb_Result == 32'h00000005) // or begin point = point + 1; end; # 20; if (tb_Result == 32'h00000001)// SLT begin point = point + 1; end; #20; if (tb_Result == 32'hfffffff4) // NOR begin point = point + 1; end #20; if (tb_Result == 32'h000004D2) // andi begin point = point + 1; end #20; if (tb_Result == 32'hfffff8d7) // ori begin point = point + 1; end #20; if (tb_Result == 32'h00000001) // SLT begin point = point + 1; end; # 20; if (tb_Result == 32'hfffffb2c) // nor begin point = point + 1; end; # 20; if (tb_Result == 32'h00000030) // sw begin point = point + 1; end; # 20; if (tb_Result == 32'h00000030) // l begin point = point + 1; end; # 20; if (tb_Result == 32'h00000030) // lw begin point = point + 1; end; $display ("%s%d","The number of correct test cases is:" , point); end initial begin #430; $finish ; end endmodule ``` 正确的结果应该是这样↓ ![图片说明](https://img-ask.csdn.net/upload/202003/16/1584304267_200131.jpg) 我自己的结果是这样↓ ![图片说明](https://img-ask.csdn.net/upload/202003/16/1584304368_363203.png) **下面发我所有模块的代码** processor: ``` `timescale 1ns / 1ps module processor ( input clk, reset, output [31:0] Result ); wire reg_write1; wire mem2reg1; wire alu_src1; wire mem_write1; wire mem_read1; wire [3:0]alu_cc1; wire [6:0]opcode1; wire [6:0]funct71; wire [2:0]funct31; wire [31:0] alu_result1; wire [1:0]ALUOp1; data_path un( .clk(clk), .reset(reset), .alu_result(alu_result1), .reg_write(reg_write1), .mem2reg(mem2reg1), .alu_src(alu_src1), .mem_write(mem_write1), .mem_read(mem_read1), .alu_cc(alu_cc1), .opcode(opcode1), .funct7(funct71), .funct3(funct31) ); Controller uni( .Opcode(opcode1), .ALUSrc(alu_src1), .MemtoReg(mem2reg1), .RegWrite(reg_write1), .MemRead(mem_read1), .MemWrite(mem_write1), .ALUOp(ALUOp1) ); ALUController u( .ALUOp(ALUOp1), .Funct7(funct71), .Funct3(funct31), .Operation(alu_cc1) ); assign Result = alu_result1; endmodule ``` Datapath: ``` `timescale 1ns / 1ps module data_path #( parameter PC_W = 8, parameter INS_W = 32, parameter RF_ADDRESS = 5, parameter DATA_W = 32, parameter DM_ADDRESS = 9, parameter ALU_CC_W = 4 )( input clk , input reset , input reg_write , input mem2reg , input alu_src , input mem_write, input mem_read, input [ALU_CC_W -1:0] alu_cc , output [6:0] opcode , output [6:0] funct7, output [2:0] funct3 , output [DATA_W -1:0] alu_result ); wire [PC_W -1:0] pc , pc_next; wire [INS_W -1:0] instruction; wire [DATA_W -1:0] l_alu_result; wire [DATA_W -1:0] reg1 , reg2; wire [DATA_W -1:0] l_read_data; wire [DATA_W -1:0] l_reg_wr_data; wire [DATA_W -1:0] srcb ; wire [DATA_W -1:0] extimm; assign pc_next = pc + 4; FlipFlop pcreg(clk , reset , pc_next , pc); Instr_mem instruction_mem (pc , instruction ); assign opcode = instruction [6:0]; assign funct7 = instruction [31:25]; assign funct3 = instruction [14:12]; RegFile rf( .clk ( clk ), .reset ( reset ), .rg_wrt_en ( reg_write ), .rg_wrt_addr ( instruction [11:7] ), .rg_rd_addr1 ( instruction [19:15] ), .rg_rd_addr2 ( instruction [24:20] ), .rg_wrt_data ( l_reg_wr_data ), .rg_rd_data1 ( reg1 ), .rg_rd_data2 ( reg2 )); assign l_reg_wr_data = mem2reg ? l_read_data : l_alu_result; ImmGen ext_imm (instruction , extimm ); assign srcb = alu_src ? extimm : reg2; alu_32 alu_module( .A_in(reg1), .B_in(srcb), .ALU_Sel(alu_cc), .ALU_Out(l_alu_result), .Carry_Out(), .Zero(), .Overflow ()); assign alu_result = l_alu_result; DataMem data_mem(.addr(l_alu_result[DM_ADDRESS -1:2]) , .read_data(l_read_data), .write_data(reg2), .MemWrite(mem_write), .MemRead(mem_read) ); endmodule ``` FlipFlop: ``` `timescale 1ns / 1ps module FlipFlop( clk , reset, d , q ); input [7:0]d; input clk; input reset; output reg [7:0]q; always @(posedge clk) begin if (reset) q <= 0; else q <= d; end endmodule**** ``` **instruction memory:** ``` **`timescale 1ns / 1ps** // Module definition module Instr_mem( input [7:0] addr , output wire [31:0] instruction ); reg [31:0] Instruction_memory [0:63]; initial begin Instruction_memory[0] = 32'h00007033; Instruction_memory[1] = 32'h00100093; Instruction_memory[2] = 32'h00200113; Instruction_memory[3] = 32'h00308193; Instruction_memory[4] = 32'h00408213; Instruction_memory[5] = 32'h00510293; Instruction_memory[6] = 32'h00610313; Instruction_memory[7] = 32'h00718393; Instruction_memory[8] = 32'h00208433; Instruction_memory[9] = 32'h404404b3; Instruction_memory[10] = 32'h00317533; Instruction_memory[11] = 32'h0041e5b3; Instruction_memory[12] = 32'h0041a633; Instruction_memory[13] = 32'h007346b3; Instruction_memory[14] = 32'h4d34f713; Instruction_memory[15] = 32'h8d35e793; Instruction_memory[16] = 32'h4d26a813; Instruction_memory[17] = 32'h4d244893; Instruction_memory[18] = 32'h02b02823; Instruction_memory[19] = 32'h03002603; end assign instruction = Instruction_memory[addr]; endmodule ``` RegFile: ``` `timescale 1ns / 1ps // Module definition module RegFile( clk , reset , rg_wrt_en , rg_wrt_addr , rg_rd_addr1 , rg_rd_addr2 , rg_wrt_data , rg_rd_data1 , rg_rd_data2 ); input clk; input reset; input rg_wrt_en; input [4:0] rg_rd_addr1; input [4:0] rg_rd_addr2; output [31:0] rg_rd_data1; output [31:0] rg_rd_data2; input [4:0] rg_wrt_addr; input [31:0] rg_wrt_data; reg [31:0] register_file [0:31]; assign rg_rd_data1 = register_file[rg_rd_addr1]; assign rg_rd_data2 = register_file[rg_rd_addr2]; integer i; always @(posedge clk or reset) begin if (reset) begin for (i = 0; i < 32; i = i + 1) register_file[i] <= 0; end else begin if (rg_wrt_en) register_file[rg_wrt_addr] <= rg_wrt_data; end end endmodule ``` ImmGen: ``` `timescale 1ns / 1ps module ImmGen( InstCode , ImmOut ); input [31:0] InstCode; output reg [31:0] ImmOut; always @(InstCode) begin case (InstCode[6:0]) 7'b0000011 /*I-type load*/ : ImmOut = {InstCode[31]? {20{1'b1}}:20'b0 , InstCode[31:20]}; 7'b0010011 /*I-type addi*/ : ImmOut = {InstCode[31]? {20{1'b1}}:20'b0 , InstCode[31:20]}; 7'b0100011 /*S-type store*/ : ImmOut = {InstCode[31]? {20{1'b1}}:20'b0 , InstCode[31:25], InstCode[11:7]}; 7'b0010111 /*U-type AUIPC*/ : ImmOut = {InstCode[31:12], 12'b0}; default ImmOut = {32'b0}; endcase end endmodule ``` ALU: ``` `timescale 1ns / 1ps module alu_32( input [31:0] A_in ,B_in , input [3:0] ALU_Sel , output [31:0] ALU_Out , output reg Carry_Out , output Zero , output reg Overflow = 1'b0 ); reg [31:0] ALU_Result; reg [32:0] temp; reg [32:0] twos_com; assign ALU_Out = ALU_Result; assign Zero = (ALU_Result == 0); always @(*) begin Overflow = 1'b0; Carry_Out = 1'b0; case(ALU_Sel) 4'b0000: ALU_Result = A_in & B_in; 4'b0001: ALU_Result = A_in | B_in; 4'b0010: begin ALU_Result = $signed(A_in) + $signed(B_in); temp = {1'b0, A_in} + {1'b0, B_in}; Carry_Out = temp[32]; if ((A_in[31] & B_in[31] & ~ALU_Out[31]) | (~A_in[31] & ~B_in[31] & ALU_Out[31])) Overflow = 1'b1; else Overflow = 1'b0; end 4'b0110: begin ALU_Result = $signed(A_in) - $signed(B_in) ; twos_com = ~(B_in) + 1'b1; if ((A_in[31] & twos_com[31] & ~ALU_Out[31]) | (~A_in[31] & ~twos_com[31] & ALU_Out[31])) Overflow = 1'b1; else Overflow = 1'b0; end 4'b0111: ALU_Result = ($signed(A_in) < $signed(B_in ))?32 'd1:32'd0; 4'b1100: ALU_Result = ~(A_in | B_in); 4'b1111: ALU_Result = (A_in==B_in )?32'd1:32'd0 ; default: ALU_Result = A_in + B_in ; endcase end endmodule ``` data memory: ``` `timescale 1ns / 1ps module DataMem(MemRead, MemWrite, addr, write_data, read_data); input wire MemRead; input wire MemWrite; input wire [8:0] addr; input [31:0] write_data; output reg [31:0] read_data; reg [31:0] memory [0:127]; integer i; initial begin read_data = 0; for (i = 0; i < 128; i = i + 1) begin memory[i] = i; end end always @(*) begin if (MemWrite) memory[addr] = write_data; if (MemRead) read_data = memory[addr]; end endmodule ``` Controller: ``` `timescale 1ns / 1ps module Controller( Opcode, ALUSrc, MemtoReg, RegWrite, MemRead, MemWrite, ALUOp ); input [6:0] Opcode; output reg ALUSrc; output reg MemtoReg; output reg RegWrite; output reg MemRead; output reg MemWrite; output reg [1:0] ALUOp; always @(*) begin case(Opcode) 7'b0110011: begin MemtoReg = 1'b0; MemWrite = 1'b0; MemRead = 1'b0; ALUSrc = 1'b0; RegWrite = 1'b1; ALUOp = 2'b10; end 7'b0010011: begin MemtoReg = 1'b0; MemWrite = 1'b0; MemRead = 1'b0; ALUSrc = 1'b1; RegWrite = 1'b1; ALUOp = 2'b00; end 7'b0000011: begin MemtoReg = 1'b1; MemWrite = 1'b0; MemRead = 1'b1; ALUSrc = 1'b1; RegWrite = 1'b1; ALUOp = 2'b01; end 7'b0100011: begin MemtoReg = 1'b0; MemWrite = 1'b1; MemRead = 1'b0; ALUSrc = 1'b1; RegWrite = 1'b0; ALUOp = 2'b01; end default: begin MemtoReg = 1'b0; MemWrite = 1'b0; MemRead = 1'b0; ALUSrc = 1'b0; RegWrite = 1'b1; ALUOp = 2'b00; end endcase end endmodule ``` ALUController: ``` `timescale 1ns / 1ps module ALUController( ALUOp, Funct7, Funct3, Operation ); input [1:0] ALUOp; input [6:0] Funct7; input [2:0] Funct3; output reg [3:0] Operation; wire [11:0] ALU_In; assign ALU_In = {Funct7, Funct3, ALUOp}; always @(ALU_In) casex (ALU_In) 12'b000000011110: Operation = 4'b0000; 12'b000000011010: Operation = 4'b0001; 12'b000000010010: Operation = 4'b1100; 12'b000000001010: Operation = 4'b0111; 12'b000000000010: Operation = 4'b0010; 12'b010000000010: Operation = 4'b0110; 12'bxxxxxxx11100: Operation = 4'b0000; 12'bxxxxxxx11000: Operation = 4'b0001; 12'bxxxxxxx10000: Operation = 4'b1100; 12'bxxxxxxx01000: Operation = 4'b0111; 12'bxxxxxxx00000: Operation = 4'b0010; 12'bxxxxxxx01001: Operation = 4'b0010; 12'bxxxxxxx01001: Operation = 4'b0010; default: Operation = 4'b0000; endcase endmodule ```

我想用verilog HDL写一个电子时钟(只显示分秒),要附加一个秒表功能但是always不能加入两个posedge,应该怎么改进。

我刚刚学verilog 这是我的代码 现在只是实现现实分秒 怎么改才能加入一个秒表 module clock_1(clk,Clear,s1,s2,m1,m2,EN1,EN2,EN3); input clk,Clear,EN1,EN2,EN3; output reg [3:0] s1,s2,m1,m2; reg [25:0]count; reg carry,second_01s; initial count=26'b0; // 每秒产生一个脉冲 always@(posedge clk) begin begin if (count==27000000) count<=26'b0; else count<=count+1; end begin if(count==27000000) second_01s <=1; else second_01s <=0; end end //秒 always@(posedge second_01s or negedge Clear ) begin if (!Clear) begin s1<=0; s2<=0; carry=0; end //1s else if(EN2) begin carry=0; s1[3:0]<=s1[3:0]+1; if(s1[3:0]==9) begin s1[3:0] <= 0; s2[3:0] <= s2[3:0]+1; if (s2[3:0]==5) begin s2[3:0]<=0; carry<=1; end end end end //分 always@(posedge carry or negedge Clear) begin if (!Clear) begin m1<=0; m2<=0; end else if (EN2) begin m1[3:0]<=m1[3:0]+1; if(m1[3:0]==9) begin m1[3:0] <= 0; m2[3:0] <= m2[3:0]+1; if (m2[3:0]==5) begin m2[3:0]<=0; end end end en endmodule

请问用Verilog HDL怎么读写4片RAM,并进行仿真?

quartusii中同时调用4片IP核RAM后怎么对它行读写,要求依次对4片深度为12的RAM写入后,再依次读取。读取时,可以从任意地址读取。拜托大神们,帮帮忙。

Verilog HDL 为什么会说数据流描述也是一种行为描述

陈赜主编的《CPLD/FPGA与ASIC设计实践教程》一书中,刚开始说的描述方式有四种,即结构描述,数据流描述,行为描述以及三者混合方式,,但是在第五章行为描述中又讲到数据流描述也是行为描述,将数据流描述和行为描述统称为行为描述。。请问这数据流和行为描述到底有什么关系,对于后者的说法该怎么理解,,请大家共同讨论

用verilog语言设计一个方波产生器

用verilog语言设计一个方波产生器,并进行功能验证和时序验证

Verilog HDL这样错误是什么?百度都百度不出来

![CSDN移动问答][1] [CSDN移动问答][2] [CSDN移动问答][2] ![\[2\]: http://img.my.csdn.net/uploads/201409/06/1410006414_3560.jpg][3] [1]: http://img.my.csdn.net/uploads/201409/06/1410006415_1194.jpg [2]: http://img.my.csdn.net/uploads/201409/06/1410006415_1893.jpg [3]: http://%5B2%5D:%20http://img.my.csdn.net/uploads/201409/06/1410006414_3560.jpg

Verilog程序编程该怎么做~~~

用Verilog控制数码管0-9循环变化该怎么编程![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/9.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)

verilog ask调制解调testbench

请高手帮忙写下ask调制解调的testbench。 //基于verilog HDL描述语言,对基带信号进行ASK振幅调制 module ASK_modulator(clk,start,x,y); input clk; //系统时钟 input start; //开始调制信号 input x; //基带信号 output y; //调制信号 reg [1:0] q; //分频计数器 reg f; //载波信号 always @(posedge clk) begin if(start == 0) q <= 0; else if(q <= 1) begin f <= 1; q <= q + 1; end else if(q == 3) begin f <= 0; q <= 0; end else begin f <= 0; q <= q + 1; end end assign y = x && f; //对基带信号进行调制 endmodule ----------------------------------------------------------------------------- //基于verilog HDL描述语言,对ASK调制信号进行解调 module ASK_demodulator(clk,start,x,y); input clk; //系统时钟 input start; //同步信号 input x; //调制信号 output y; //基带信号 reg y; reg xx; //寄存x信号 reg [3:0] q; //计数器 reg [2:0] m; //计xx的脉冲数 always @(posedge clk) begin xx <= x; //clk上升沿时,把x信号赋给中间信号xx if(!start) q <= 0; else if(q == 11) //if语句完成q的循环计数 q <= 0; else q <= q + 1; end always @(posedge clk) //此进程完成ASK解调 begin if(q == 11) //m计数器清零 m <= 0; else if(q == 10) begin if(m < 3) //if语句通过对m大小,来判决y输出的电平 y <= 0; else y <= 1; end else if(xx == 1) m <= m + 1; end endmodule

verilog写顶层文件时出现错以下错误,该如何解决呢?

错误如下: Error (10839): Verilog HDL error at TEST.v(26): using implicit port connections is a SystemVerilog feature 代码如下: module TEST ( phase_a, phase_b, dq, ); input phase_a; input phase_b; inout [15:0] dq; DECODER( .reset(reset), .enable(enable), .phase_a(phase_a), .phase_b(phase_b), .counter(counter) ); RAM( .dq(dq), .address(address), .n_e(n_e), .n_w(n_w), .output_enable ); endmodule

verilog4位加法器仿真

v程序为module add_4(X,Y,sum,C); input[3:0] X,Y; output[3:0] sum; output C; assign {C, Sum }=X+Y; endmodule 要使用modelsim仿真,生成的vt文件应该怎么修改? `timescale 1 ps/ 1 ps module add_4_vlg_tst(); // constants // general purpose registers // test vector input registers reg clk; reg [3:0] X; reg [3:0] Y; // wires wire C; wire [3:0] sum; // assign statements (if any) add_4 i1 ( // port map - connection between master ports and signals/registers .C(C), .X(X), .Y(Y), .sum(sum) ); initial begin // code that executes only once // insert code here --> begin // --> end $display("Running testbench"); end always // optional sensitivity list // @(event1 or event2 or .... eventn) begin // code executes for every event on sensitivity list // insert code here --> begin // --> end end endmodule

4-16译码器Verilog门级建模该怎么写?

用两个3-8译码器组成的4-16译码器源代码用门级建模该怎么描写?

像Verilog HDL一样的PHP功能块

<div class="post-text" itemprop="text"> <p>I do love programming, but I do love do function in a diagram block as in the image. Does any IDE support function block for PHP?I commonly use PHP to do website project.</p> <p>Anyone got ideas or experience? I appreciate those who help me. Thanks!</p> <p><a href="https://i.stack.imgur.com/YdWa5.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YdWa5.png" alt="enter image description here"></a></p> </div>

有关状态机的Verilog代码

我的状态机代码和test代码分别如下: module transformation (a,b,s,clk,S,C,X); input a,b,s,clk; output S,C,X; reg S,C,X; always @ (posedge clk) case(s) 0:if(a==1&b==1)begin S<=1; C<=0; end else if(a==0&b==0)begin S<=5; C<=1; end else begin S<=s; X<=1; end 1:if(a==1&b==0)begin S<=4; C<=1; end else if(a==0&b==1)begin S<=3; C<=0; end else begin S<=s; X<=1; end 2:if(a==0&b==0) begin S<=1; C<=1; end else if(a==1&b==0)begin S<=5; C<=0; end else begin S<=s; X<=1; end 3:if(a==0&b==0) begin S<=2; C<=0; end else if(a==1&b==0) begin S<=4; C<=1; end else begin S<=s; X<=1; end 4:if(a==1&b==0) begin S<=3; C<=0; end else if(a==0&b==1) begin S<=5; C<=1; end else begin S<=s; X<=1; end 5:if(a==0&b==0)begin S<=5; C<=0; end else if(a==1&b==0)begin S<=0; C<=1; end else begin S<=s; X<=1; end endcase endmodule 和 module test(); reg a,b,C,X,clk; reg [0:2] s,S; initial begin clk=0; a=0; b=0; s=0; S=6; X=0; end always #10 a=~a; always #5 b=~b; always #5 clk=~clk; always @ (posedge clk) begin X<=0; if(S==6) ; else begin s<=S; end transformationT1( .a(a), .b(b), .s(s), .clk(clk), .S(S), .C(C), .X(X) ); end endmodule 仿真后发现全部都是高阻,这是为什么啊?要怎么改呢?

verilog代码错误提示一个模块不能被重复声明

module signal_light(clk,rst,count,light1,light2); input clk,rst; input [5:0] count; output light1,light2; reg[2:0] light1,light2; reg[2:0]state; parameter Idle=3'b000, S1=3'b001, S2=3'b010, S3=3'b011, S4=3'b100; always@(posedge clk) begin if(!rst) begin state<=Idle; light1<=3'b100; light2<=3'b001; end else case(state) Idle: if(rst) begin state<=S1; light1<=3'b100; light2<=3'b001; end S1: if(count=='d25) begin state<=S2; light1<=3'b100; light2<=3'b010; end S2: if(count=='d30) begin state<=S3; light1<=3'b001; light2<=3'b100; end S3: if(count=='d55) begin state<=S4; light1<=3'b010; light2<=3'b100; end S4: if(count=='d60) begin state<=S1; light1<=3'b100; light2<=3'b001; end default:state<=Idle; endcase end endmodule module counter(clk,rst,count); output count; input clk,rst; reg[5:0] count; always@(posedge clk or negedge rst) begin if(!rst) count<='d0; else if(count<'d60) count<=count+1; else count<='d1; end endmodule module signal_light_top(count,clk,rst,light1,light2); input clk,rst; output[2:0] light1,light2; output[5:0]count; wire[5:0] count; counter u2(clk,rst,count); signal_light u1(clk,rst,count,light1,light2); endmodule 错误为Error (10228): Verilog HDL error at signal_light_top.v(3): module "signal_light" cannot be declared more than once

verilog写一个32位并转串的模块请帮我看看哪里错了

module BZHUANCHUAN(CLK_RCK,CLK_SCK,BING_IN,CHUAN_OUT); input CLK_RCK,CLK_SCK; input [0:31]BING_IN; output CHUAN_OUT; reg [0:31]store; always@(posedge CLK_RCK) begin store<=BING_IN; for(i=0;i<32;i++) @(posedge CLK_SCK) CHUAN_OUT<=store(i); end; end module 第一个错误就是for(i=0;i<32;i++)这句它说 Error (10170): Verilog HDL syntax error at BZHUANCHUAN.v(11) near text "+"; expecting "="

请问大家用verilog写一个变声器的算法大致是什么思路?

请问是要用到fft之类的吗?频谱搬移? 真心求解... 希望有朋友帮忙讲讲大致的思路这个样子

在Verilog语言中,这样算是对一个变量重复定义么

module N( input a, input b, output c); . . . reg c; always@(*)begin . . .. end endmodule 我这样定义后,反回了重复定义变量的警告,希望各位大佬能解答一下

FPGA大神求帮忙急急急急急

用Verilog hdl语言编写一个程序可以让数码管动态显示 就是用这个编写一个程序就行,

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Intellij IDEA 实用插件安利

1. 前言从2020 年 JVM 生态报告解读 可以看出Intellij IDEA 目前已经稳坐 Java IDE 头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA 的...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机

据羊城晚报报道,近日中芯国际从荷兰进口的一台大型光刻机,顺利通过深圳出口加工区场站两道闸口进入厂区,中芯国际发表公告称该光刻机并非此前盛传的EUV光刻机,主要用于企业复工复产后的生产线扩容。 我们知道EUV主要用于7nm及以下制程的芯片制造,光刻机作为集成电路制造中最关键的设备,对芯片制作工艺有着决定性的影响,被誉为“超精密制造技术皇冠上的明珠”,根据之前中芯国际的公报,目...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

百度工程师,获利10万,判刑3年!

所有一夜暴富的方法都写在刑法中,但总有人心存侥幸。这些年互联网犯罪高发,一些工程师高技术犯罪更是引发关注。这两天,一个百度运维工程师的案例传遍朋友圈。1...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

内容导航: 1、TIOBE排行榜 2、总榜(2020年6月份) 3、本月前三名 3.1、C 3.2、Java 3.3、Python 4、学习路线图 5、参考地址 1、TIOBE排行榜 TIOBE排行榜是根据全世界互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据。

立即提问
相关内容推荐