没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
17页
个人学习Verilog HDL以来写的第一个程序,所以其中可能有不完善的地方,供各位参考。大虾直接无视…… 使用的晶振频率为40Mhz,通过16分频得到250Khz的信号adcclk输出控制TLC0831,再经过10000分频得到40ms的信号控制MDC,最终完成1s一个MDC的切换,采样后的数据采用三个字节传送数据,第一个字节为0,作为标志位使用;第二个字节的8bit前四位为MDC编号,后四位为采样序号,MDC编号从0-9,采样序号从1-10;第三个字节为数据位,数据范围从1-255;使用rs232通信。在上位机读取数据时,如果为0则为标志字节(由于编号字节和数据字节都不可能为0),便于进行控制。每个数据发送两次,没有校验位,可在后端进行数据比对完成校验。 因为时间有效,所以暂时没有进行注释……我觉得作为一个入门级的程序,应该很容易看懂吧…… 个人使用Quartus 7.2,在上面进行过仿真,暂时还没有发现问题。
资源推荐
资源详情
资源评论
module tugedafinal(din,clk,adcclk,dout,dcadc,dcmdc1,dcmdc2,dcmdc3,dcmdc4,dcmdc5,dcmdc6,dcmdc7,dcmdc8,dcmdc9);
input din;
input clk;
output reg adcclk;
output reg dout;
output reg dcadc;
output reg dcmdc1;
output reg dcmdc2;
output reg dcmdc3;
output reg dcmdc4;
output reg dcmdc5;
output reg dcmdc6;
output reg dcmdc7;
output reg dcmdc8;
output reg dcmdc9;
reg con;
reg condin;
reg insclk;
reg [3:0] antenna;
reg [3:0] sample;
reg [7:0] con_count;
reg [7:0] adc_count;
reg [7:0] mdc_count;
reg [7:0] indata_buf;
reg [13:0] ins_count;
always@(posedge clk)
case(adc_count)
0:begin
adc_count<=adc_count+1;
input din;
input clk;
output reg adcclk;
output reg dout;
output reg dcadc;
output reg dcmdc1;
output reg dcmdc2;
output reg dcmdc3;
output reg dcmdc4;
output reg dcmdc5;
output reg dcmdc6;
output reg dcmdc7;
output reg dcmdc8;
output reg dcmdc9;
reg con;
reg condin;
reg insclk;
reg [3:0] antenna;
reg [3:0] sample;
reg [7:0] con_count;
reg [7:0] adc_count;
reg [7:0] mdc_count;
reg [7:0] indata_buf;
reg [13:0] ins_count;
always@(posedge clk)
case(adc_count)
0:begin
adc_count<=adc_count+1;
adcclk<=1'b0;
end
80:begin
adc_count<=adc_count+1;
adcclk<=1'b1;
end
159:adc_count<=0;
default:adc_count<=adc_count+1;
endcase
always@(posedge insclk)
case(con_count)
0:begin
con<=1'b0;con_count<=con_count+1;end
15:begin
con<=1'b1;con_count<=con_count+1;end
24:begin
con<=1'b0;
con_count<=0;
end
default:con_count<=con_count+1;
endcase
always@(posedge adcclk)
case(ins_count)
0:begin
dout<=1'b1;
dcadc<=1'b1;
insclk<=1'b0;
if(sample==0)sample<=1;
end
80:begin
adc_count<=adc_count+1;
adcclk<=1'b1;
end
159:adc_count<=0;
default:adc_count<=adc_count+1;
endcase
always@(posedge insclk)
case(con_count)
0:begin
con<=1'b0;con_count<=con_count+1;end
15:begin
con<=1'b1;con_count<=con_count+1;end
24:begin
con<=1'b0;
con_count<=0;
end
default:con_count<=con_count+1;
endcase
always@(posedge adcclk)
case(ins_count)
0:begin
dout<=1'b1;
dcadc<=1'b1;
insclk<=1'b0;
if(sample==0)sample<=1;
剩余16页未读,继续阅读
资源评论
- q8259096912012-11-13入门经典教材,呵呵,下载先,谢谢分享
- guangsen_12013-05-17很实用。谢谢!!
- 嘎啦王2019-02-16谢谢分享了
mrfengguanghui
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功