用FPGA给AD和DA编程的一些问题(verilog)

我一直有些疑惑,用FPGA给AD和DA进行编程的时候,module中的input和output是指AD模块的input和output还是指FPGA芯片的input和out... 我一直有些疑惑,用FPGA给AD和DA进行编程的时候,module中的input和output是指AD模块的input和output还是指FPGA芯片的input和output?我附上一段代码,求解答!

module adc(clock,reset,enable,sdat_in,adc_clk,cs_n,data_ready,data_out);
//I/O口声明
input clock; //系统时钟
input reset; //复位,高电平有效
input enable; //转换使能
input sdat_in; //TLC549串行数据输入
output adc_clk; //TLC549 I/O时钟
output cs_n; //TLC549 片选控制
output data_ready; //指示有新的数据输出
output[7:0] data_out; //AD转换数据输出
//I/O寄存器
reg adc_clk_r;
reg cs_n_r;
reg data_ready_r;
reg[7:0] data_out_r; //AD转换数据输出
reg sdat_in_r; //数据输出锁存
//内部寄存器
reg[7:0]q; //移位寄存器,用于接收或发送数据
reg[2:0]adc_state; //状态机ADC
reg[2:0]adc_next_state;
reg[5:0]bit_count; //移位计数器
reg bit_count_rst; //ADC时钟计数器全能控制
reg div_clk;
reg[CLK_DIV_BITS-1:0] clk_count;//时钟分频计数器

reg buf1,buf2;
//内部信号
wire ready_done; //cs_n拉低(大于1.4us)后的标志
wire rec_done; //数据读取完毕的标志
wire conv_done; //数据转换完毕的标志

//计时器参数

parameter CLK_DIV_VALUE = 31; //ADC时钟计数器(大于404nS)计数值
parameter CLK_DIV_BITS = 5; //ADC时钟计数器位宽

//状态机M1状态参数表
parameter idle = 3'b000,
adc_ready = 3'b001,
adc_receive = 3'b011,
adc_conversion = 3'b010,
adc_data_load = 3'b110;

//**********************************************************
//I/O寄存器输出
assign adc_clk = adc_clk_r;
assign cs_n = cs_n_r;
assign data_out = data_out_r;
assign data_ready = data_ready_r;

//同步输入数据信号
always @(posedge clock)
begin
sdat_in_r <= sdat_in;
end
//**********************************************************
//时钟分频计数器
always @(posedge clock)
begin
if (reset == 1'b1)
clk_count <= 5'd0;
else
begin
if (clk_count < CLK_DIV_VALUE)
begin
clk_count <= clk_count + 1'b1;
div_clk <= 1'b0;
end
else
begin
clk_count <= 5'd0;
div_clk <= 1'b1;
end
end
end
展开
 我来答
晴天年少
2013-08-04
知道答主
回答量:25
采纳率:0%
帮助的人:24.3万
展开全部
不需要分析什么程序。。
你只要记住,FPGA里面的输入输出都是以FPGA的芯片为第一人称来讲的。只要记住就可以了。。
通俗讲就是芯片内部往外输出信号就是output,外面的信号往芯片内部输入就是input。
举个例子,你的主时钟50MHZ,是在芯片外面的晶振把信号输入进来,所以clk就是input。
外围的ic器件的分析都是一样的。。
追问
那么,假如说我的module AD();中有一条语句是output DATA;那么这条语句一定是FPGA输出的吧?我的FPGA输出这个AD后的数字量有什么用呢?我是把这个数字量返回给了AD芯片还是可以用于DA转换回模拟量?
追答
对是FPGA的输出,不过输出也可以分为内部的输出和外部端口的输出。。
你用AD芯片不就是为了采集模拟量吗?但是数字器件不识别模拟量,所以转化为数字量再采集。
而这些采集的数字量这就是你AD中的那个output DATA,这个output就看你自己的程序具体要干什么了。
比如你可以把这个output当做FPGA内部的输出端口,也就是输入到你工程中另一个模块,比如lcd1602,经过简单的转换就可以在你lcd上显示你采集到的模拟量是多少了。
还有就像你说的,也可以作为FPGA外部输出端口,直接再转给你的DA输出。波形的采集和输出就可以这样做,中间加个存储就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式