网站建设需要知识,品牌运营公司,义务加工网,北京市网站制作公司数字逻辑电路分为哪两类#xff1f;它们各自的特点是什么#xff1f; 组合逻辑电路#xff1a;任意时刻的输出仅仅取决于该时刻的输入#xff0c;而与电路原来的状态无关 没有记忆功能#xff0c;只有从输入到输出的通路#xff0c;没有从输出到输入的回路 时序逻辑电路它们各自的特点是什么 组合逻辑电路任意时刻的输出仅仅取决于该时刻的输入而与电路原来的状态无关 没有记忆功能只有从输入到输出的通路没有从输出到输入的回路 时序逻辑电路电路的输出不仅与当前时刻输入的变量的取值有关而且与电路的原状态即过去的输入情况有关 Verilog HDL描述数字逻辑电路的建模方式有哪几种它们各自的特点是什么 数据流建模数据不会存储输入信号经过组合逻辑电路传到输出时类似于数据流动而不会在其中存储通过assign连续赋值语句进行描述 行为级建模从电路外部行为的角度对其进行描述抽象过程语句语句块过程赋值语句条件分支循环 结构化建模将硬件电路描述成一个分级子模块系统通过逐层调用这些子模块构成功能复杂的数字逻辑电路和系统的一种描述方式 模块级建模 门级 开关级 解释名词 FPGA--Field Programmable Gate Array 现场可编程门阵列 ASIC--Application Specific Integrated Circuit 专用集成电路 IP--Intellectual Property 知识产权 RTL--Register Transfer Level 寄存器传输级 EDA--Electronic Design Automation 电子设计自动化 写出下面程序中变量x、y、z、a、b的类型
assign zxy;
initialbegina4b1010;b8hff;end wirex、y、z rega、b 分别通过阻塞赋值和非阻塞赋值语句描述如下电路 阻塞 module block(input wire din,input wire clk,output reg[3:0] q
);always(posedge clk)beginq[3]q[2];q[2]q[1];q[1]q[0];q[0]din;end module block(input wire din,input wire clk,output reg[3:0] q
);always(posedge clk)beginq[3]q[2];q[2]q[1];q[1]q[0];q[0]din;end 画出下面程序的仿真波形图并通过串行语句实现
parameter T10;initialforkwave0;#T wave1;#(2*T) wave0;#(3*T) wave1;#(4*T) wave0;#(5*T) wave1;join parameter T10;initialbeingwave0;#T wave1;#T wave0;#T wave1;#T wave0;#T wave1;end parameter T10;initialbeginwave0;while(1)#10 wave~wave;end 2输入8位加法器a b sum cin cout module eight_bits_fulladder(sum,cout,a,b,c,cin);output[7:0] sum;output cout;input[7:0] a,b;input cin;assign {cout,sum}abcin;
endmodule module eight_bits_fulladder_tb;reg cin;reg[7:0] a,b;wire cout;wire[7:0] sum;eight_bits_fulladder U1(sum,cout,a,b,cin);initialbegin a8b0;b8b0;cin0;#10 a8b0;b8b0;cin1;#10 a8b0;b8b1;cin0;#10 a8b0;b8b1;cin1;#10 a8hfe;b8h1;cin0;#10 a8hfe;b8h1;cin1;end
endmodule 设计一个带复位端并且可以对输入的clk进行任意分频 module addr(count,clk,rst,qout);input clk,rst;output reg[31:0] count;output wire qout;always(posedge clk)beginif(!rst) count0;else countcount1;endassign qoutcount[0];
endmodule module addr_tb;reg clk,rst;wire[31:0] count;wire qout;addr U1(count,clk,rst,qout);always #10 clk~clk;initialbeginclk0;rst0;#20 rst1;#100 rst0;#20 rst1;end
endmodule module addr_tb;reg clk,rst;wire[31:0] count;wire qout;addr U1(count,clk,rst,qout);always #10 clk~clk;initialbeginclk0;rst0;#20 rst1;#90 rst0;#20 rst1;end
endmodule 设计串行输入的8位移位寄存器复位信号rst低电平有效1位数据输入datain8位数据输出dataout方向控制direction请设计该串行寄存器模块 module shift(rst,clk,datain,dataout,direction);input datain;input rst,clk;input direction;output reg[7:0]dataout;always(posedge clk or negedge rst)if(!rst)dataout8b0;elseif(direction)dataout{datain,dataout[7:1]};elsedataout{dataout[6:0],datain};
endmodule module shift_tb;reg rst,clk,datain,direction;wire[7:0] dataout;shift U2(rst,clk,datain,dataout,direction);always#5 clk~clk;initialbeginrst0;clk0;datain0;direction0;#5 rst1;datain1;#80 datain0;direction1;#80 datain1;end
endmodule 请使用verilog描述一个容量为256*8bit的ROM存储器其中输入时钟clk上升沿有效地址线为addr片选信号cs低电平有效输出数据为dout module rom(clk,addr,cs,dout);input clk;input cs;input [7:0] addr;output [7:0] dout;reg[7:0] dout;reg[255:0] rom [7:0];initialbeginrom[0]8b0000_0000;rom[1]8b0000_0001;rom[2]8b0000_0010;rom[3]8b0000_0011;rom[4]8b0000_0100;rom[5]8b0000_0101;rom[6]8b0000_0110;rom[7]8b0000_0111;endalways(posedge clk)beginif(cs) dout8bzzzz_zzzz;else doutrom[addr];end
endmodule module rom_tb;reg clk,cs;reg[7:0] addr;wire[7:0] dout;rom U1(clk,addr,cs,dout);initialbeignclk0;addr0;cs0;endalways #10 clk~clk;initialbeginrepeat(7) #20 addraddr1;end
endmodule 设计一个检测序列1001 状态寄存器在clk,rst控制下由次态产生现态 C1根据当前输入和现态产生次态 C2输入、现态产生输出 moore module seqdata_moore(clk,rst,din,dout);input clk,rst,din;output dout;reg dout;reg[2:0] present_state,next_state;parameter s03b000,s13b001,s23b010;s33b011,s43b100;always(posedge clk or posedge rst)beginif(rst) prensent_states0;else present_statenext_state;endalways(*)begincase(present_state)s0: if(din1) next_states1;else next_states0;s1: if(din0) next_states2;else next_states1;s2: if(din0) next_states3;else next_states1;s3: if(din1) next_states4;else next_states0;s4: if(din1) next_states1;else next_states2;default: next_states0;endcaseendalways(*)beginif(present_states4) dout1;else dout0;end
endmodule module seqdata_moore_tb;reg clk,rst,din;wire dout;seqdata_moore U1(clk,rst,din,dout);always #5 clk~clk;initialbeginclk0;rst1;din0;#5 rst0;#10 din1;;#10 din0;#20 din1;#20 din0;#30 din1;#10 din0;#20 din1;end
endmodule mealy module seqdata_mealy(clk,rst,din,dout);input clk,rst,din;output dout;reg dout;reg[2:0] present_state,next_state;parameter s03b000,s13b001,s23b010;s33b011,s43b100;always(posedge clk or posedge rst)beginif(rst) prensent_states0;else present_statenext_state;endalways(*)begincase(present_state)s0: if(din1) begin next_states1; dout0;endelse begin next_states0;dout0;ends1: if(din0) begin next_states2;dout0; endelse begin next_states1;dout0;ends2: if(din0) begin next_states3;dout0;endelse begin next_states1;dout0;ends3: if(din1) begin next_states1;dout1;else begin next_states0;dout0;default: begin next_states0;dout0;endendcaseendendmodule