答:FPGA和CPLD的区别
主要特性 1、结构 2、速度 3、密度 4、互联 5、功耗
11、 电路设计
1.用Verilog HDL描述反相器、八输入与门、八输入或门、八输入异或门、一位D触发器、一位锁存器、四选一电路、两位比较器、两位加法器、两位乘法器。 答:详王金明例题
2.用基本的逻辑单元,如D触发器、比较器、选择器和逻辑门等器件设计一个双口RAM,RAM的深度位16,宽度为8;RAM的模型如下
module ram16X8( w_clk,wr_en,wr_addr,data_in,
r_clk,rd_en,rd_addr,data_out );
input w_clk,wr_en,r_clk,rd_en; input [7:0] data_in;
input [3:0] wr_addr,rd_addr; output [7:0] data_out;
CPLD 类似PLA 快、可预测 低等到中等 纵横连接方式 高 FPGA 类似门阵列 取决于应用 中等到高等 路径选择方式 低 reg [7:0] data_out; reg [7;0] mem [15:0]; always @(posedge wr_clk)
if(wr_en)
mem[wr_addr] <= data_in;
always @(posedge rd_clk)
if(rd_en)
data_out <= mem[rd_addr];
endmodule
? 画出电路结构图 ? 用Verilog HDL写出电路
3.异步FIFO电路的设计,FIFO的深度为16,宽度为8位,CLKA写入,CLKB读出,给出读空和写满指示。 /////////RAM模块
module RAM16X8( wr_clk,wr_en,wr_addr,data_in, rd_clk,rd_en,rd_addr,data_out ); input wr_clk,wr_en,rd_clk,rd_en; input [7:0] data_in; input [3:0] wr_addr,rd_addr; output [7:0] data_out; reg [7:0] data_out;
reg [7:0] mem [15:0]; always @(posedge wr_clk) if(wr_en)
mem[wr_addr] <= data_in; always @(posedge rd_clk) if(rd_en)
data_out <= mem[rd_addr]; endmodule
////////肈触发器打两下的模块
module D_D(clock,reset_n,data_in,data_out);
input clock,reset_n; input [3:0] data_in; output [3:0] data_out; reg [3:0] data_out,data0; wire [3:0] data_w;
assign data_w=data0;
always @ (posedge clock or negedge reset_n)
begin
if(!reset_n) begin data0<=4'h0; end
else begin
data0<=data_in; end
end
always @ (posedge clock or negedge reset_n)
begin
if(!reset_n) begin
data_out<=4'h0; end
else begin
data_out<=data_w; end
end
endmodule //////////FIFO模块
module
FIFO(clock_in,data_in,wr_en,clock_out,data_out,rd_en,reset_n,F_flag,E_flag);
input clock_in,wr_en,clock_out,rd_en,reset_n; input [7:0] data_in; output F_flag,E_flag; output [7:0] data_out; reg F_flag,E_flag;
reg [3:0] wr_addr,rd_addr;
wire [3:0] wr_addr_w,rd_addr_w,wr_addr_bijiao,rd_addr_bijiao;
//////////生成写地址
assign wr_addr_bijiao=wr_addr; always @ (clock_in or reset_n) begin
if(!reset_n) begin
wr_addr<=4'h0; end
else if(wr_en) begin
wr_addr<=wr_addr+1'b1;