📄 exp.v
字号:
module exp (
clk,
reset,
dds_out,
expdin,
expdout,
expaddr,
expread,
expwrite
);
input clk;
input reset;
output [7:0] dds_out; // DDS output
output [7:0] expdin; // TO the PIC core.
input [7:0] expdout; // FROM the PIC core.
input [6:0] expaddr; // Address
input expread; // Asserted (high) when PIC is reading FROM us.
input expwrite; // Asserted (high) when PIC is writing TO us.
reg [7:0] expdin;
reg [7:0] dds_out;
reg [7:0] ddsstep;
reg [0:0] ctl;
reg [9:0] accum;
reg [7:0] sinout;
reg [7:0] sin_rom [0:1023];
initial begin
$display ("Reading in SIN data for example DDS in EXP.V from sindata.hex");
$readmemh ("sindata.hex", sin_rom);
end
always @(posedge clk) begin
if (reset) begin
accum <= 0;
end
else begin
accum <= accum + ddsstep;
end
end
always @(posedge clk) begin
if (reset) begin
sinout <= 0;
end
else begin
sinout <= sin_rom[accum];
end
end
always @(posedge clk) begin
if (reset) begin
dds_out <= 0;
end
else begin
if (ctl[0]) begin
dds_out <= sinout;
end
else begin
dds_out <= 0;
end
end
end
// Drive the expdin bus back to the PIC.
always @(expread or expaddr) begin
if (expread) begin
case (expaddr)
7'h7F: expdin <= ddsstep;
default: expdin <= 0;
endcase
end
else begin
expdin <= 0;
end
end
//
always @(posedge clk) begin
if (reset) begin
ctl <= 0;
ddsstep <= 0;
end
else begin
if (expwrite) begin
case (expaddr)
7'h7E: ctl <= expdout[7:0];
7'h7F: ddsstep <= expdout[7:0];
endcase
end
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -