📄 ads7822.v
字号:
`timescale 1ns / 1ps
// synthesis translate_on
module ads7822 (
// inputs:
clk,
read_n,
chipselect_n,
// outputs:
AD_DATA,
AD_CS,
AD_CLK,
irq,
readdata
)
;
input AD_DATA;
output AD_CS;
output AD_CLK;
output irq;
output [ 15: 0] readdata;
input read_n;
input clk;
input chipselect_n;
wire AD_DATA;
reg AD_CS;
reg AD_CLK;
reg [10:0] DCLK_DIV;
reg [4:0] COUNTER;
reg [15:0] data_out;
reg [11:0] data_reg;
reg irq;
wire [ 15: 0] readdata;
parameter CLK_FREQ = 'D50_000_000;
parameter DCLK_FREQ = 'D1_000_000;
assign readdata = data_out;
// assign AD_CS = chipselect_n;
always @(posedge clk)
if(DCLK_DIV < (CLK_FREQ / DCLK_FREQ))
DCLK_DIV <= DCLK_DIV+1;
else
begin
DCLK_DIV <= 0;
AD_CLK <= ~AD_CLK;
end
always @(negedge AD_CLK)
if(COUNTER < 'd15)
begin
data_reg[0] <= AD_DATA;
data_reg[11:1] <= data_reg[10:0];
COUNTER <= COUNTER+1;
irq <= 0;
end
else if(COUNTER =='d15)
begin
COUNTER <= COUNTER+1;
data_out <= {4'b0000,data_reg[11:0]};
irq <= 1;
AD_CS<= 1'b1;
end
else
begin
COUNTER <= 0;
AD_CS<= 1'b0;
end
//control_slave, which is an e_avalon_slave
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -