modelsim仿真为什么一直为高阻? 20
代码如下,里面的子模块应该没有错误,问过老师说可能是接线的问题或者是数据位数的问题,,库应该也没有问题,请帮我看下。`timescale1ns/1psmoduledds(...
代码如下,里面的子模块应该没有错误,问过老师说可能是接线的问题或者是数据位数的问题,,库应该也没有问题,请帮我看下。
`timescale 1ns / 1ps
module dds(K, clk, reset, sine_data);
input [21:0] K;
input clk;
input reset;
output [15:0] sine_data;
//Accumulator
wire[23:0] raw_addr;
wire[23:0] s1;
add24 add24_inst(
.a({2'b00,K}),
.b(raw_addr),
.ci(1'b0),
.s(s1),
.co()
);
dffr #(24) dffr24(.d(s1), .clk(clk),.r(reset),.q(raw_addr));
//address process
wire[9:0] rom_addr;
wire[9:0] addr_temp;
assign rom_addr=(raw_addr[21]&&(~|raw_addr[20:11]))?10'd1023: addr_temp;
add12 add12_inst(
.a({10{raw_addr[21]}}^raw_addr[20:11]),
.b(12'd0),
.ci(raw_addr[21]),
.s(addr_temp),
.co());
//rom read
wire[15:0] raw_data;
sine_rom rom_inst(
.clk(clk),
.dout(raw_data),
.addr(rom_addr)
);
//data process
wire addr_22;
wire[15:0] data;
dff #(1) dff_inst1(.d(raw_addr[22]), .clk(clk), .q(addr_22));
add16 add16_inst(
.a({16{addr_22}}^raw_data),
.b(16'd0),
.ci(addr_22),
.s(data),
.co()
);
//sine_data
dff #(16) dff_inst16(.d(data), .clk(clk), .q(sine_data));
endmodule
测试代码如下,
module dds_tb;
reg clk,reset;
reg[21:0] k;
wire[15:0] sine_data;
always #50 clk=~clk;
initial clk=1;
dds u1(k,clk,reset,sine_data);
initial begin
k={11'd81,11'd92};reset=0;
#100 k={11'd120,11'd92};reset=0;
#100 k={11'd300,11'd92};reset=0;
#100 k={11'd400,11'd92};reset=0;
#100 k={11'd600,11'd92};reset=0;
#100 k={11'd700,11'd92};reset=0;
#100 k={11'd800,11'd92};reset=0;
#100 k={11'd81,11'd92};reset=1;
#100 $stop;
end
endmodule 展开
`timescale 1ns / 1ps
module dds(K, clk, reset, sine_data);
input [21:0] K;
input clk;
input reset;
output [15:0] sine_data;
//Accumulator
wire[23:0] raw_addr;
wire[23:0] s1;
add24 add24_inst(
.a({2'b00,K}),
.b(raw_addr),
.ci(1'b0),
.s(s1),
.co()
);
dffr #(24) dffr24(.d(s1), .clk(clk),.r(reset),.q(raw_addr));
//address process
wire[9:0] rom_addr;
wire[9:0] addr_temp;
assign rom_addr=(raw_addr[21]&&(~|raw_addr[20:11]))?10'd1023: addr_temp;
add12 add12_inst(
.a({10{raw_addr[21]}}^raw_addr[20:11]),
.b(12'd0),
.ci(raw_addr[21]),
.s(addr_temp),
.co());
//rom read
wire[15:0] raw_data;
sine_rom rom_inst(
.clk(clk),
.dout(raw_data),
.addr(rom_addr)
);
//data process
wire addr_22;
wire[15:0] data;
dff #(1) dff_inst1(.d(raw_addr[22]), .clk(clk), .q(addr_22));
add16 add16_inst(
.a({16{addr_22}}^raw_data),
.b(16'd0),
.ci(addr_22),
.s(data),
.co()
);
//sine_data
dff #(16) dff_inst16(.d(data), .clk(clk), .q(sine_data));
endmodule
测试代码如下,
module dds_tb;
reg clk,reset;
reg[21:0] k;
wire[15:0] sine_data;
always #50 clk=~clk;
initial clk=1;
dds u1(k,clk,reset,sine_data);
initial begin
k={11'd81,11'd92};reset=0;
#100 k={11'd120,11'd92};reset=0;
#100 k={11'd300,11'd92};reset=0;
#100 k={11'd400,11'd92};reset=0;
#100 k={11'd600,11'd92};reset=0;
#100 k={11'd700,11'd92};reset=0;
#100 k={11'd800,11'd92};reset=0;
#100 k={11'd81,11'd92};reset=1;
#100 $stop;
end
endmodule 展开
1个回答
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询