Driving ADC128S102 By Verilog
access_timeفروردین 15, 1399
perm_identity
ارسال شده توسط محمد حسین اصفهانی
visibility
206 بازدید
موضوع
راه اندازی مبدل آنالوگ به دیجیتال توسط سخت افزار به زبان وریلاگ
بررسی دیتا شیت مبدل آنالوگ به دیجیتال
کد راه انداز مبدل آنالوگ به دیجیتال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
/* www.octacore.ir */ /* تعریف ماژول به همراه پورت ها */ module ADC128S102 (MOSI,data,sck,cs,MISO,clk_32M,Enable,clk_16M,s,LOCKED); /* تعریف پورت های خروجی */ output MOSI,cs,sck; output [15:0] data; /* تعریف پورت های ورودی */ input wire clk_32M,Enable,clk_16M; input wire MISO,LOCKED; input wire [7:0] s; /* تعریف متغیر ها */ reg MOSI=2'b00; reg sck=1'b1; reg cs=1'b1; reg [15:0] conversion_data=16'b0; reg [15:0] data=16'b0; reg [3:0] counter=4'b0000; reg [2:0] address=3'b000; /* ایجاد کلاک مورد نیاز مبدل */ always @ (clk_16M or Enable or cs or LOCKED) begin if(Enable==1'b1 && LOCKED==1'b1) begin if(cs==1'b0) begin sck=clk_16M; end else sck=1'b1; end else sck=1'b1; end /* دریافت دیتا از مبدل و ارسال به آن */ always @ ( negedge clk_32M ) begin if(Enable==1'b1 && LOCKED==1'b1) begin if(cs==1'b1) begin if(clk_16M==1'b1) cs<=1'b0; else cs<=1'b1; end else begin if (sck==1'b1) begin conversion_data[4'hf-counter]<=MISO; if (counter<4'hf) counter<=counter+4'b1; else counter<=4'b0000; data<=conversion_data; end else begin if(counter==4'b0010) MOSI<=address[2]; else if(counter==4'b0011) MOSI<=address[1]; else if(counter==4'b0100) MOSI<=address[0]; else MOSI<=1'bz; end end end else begin counter<=4'b0; cs <= 1'b1; MOSI<=1'bz; conversion_data<=16'b0; data<=16'b0; end end /* انتخاب کانال ورودی */ always @ (s or Enable or LOCKED) begin if(Enable==1'b1 && LOCKED==1'b1) begin case (s) 8'b00000001:address<=3'b000; 8'b00000010:address<=3'b001; 8'b00000100:address<=3'b010; 8'b00001000:address<=3'b011; 8'b00010000:address<=3'b100; 8'b00100000:address<=3'b101; 8'b01000000:address<=3'b110; 8'b10000000:address<=3'b111; default :address<=3'b000; endcase end else address<=3'bzzz; end /* پایان ماژول */ endmodule |
کد TOP ماژول
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* www.octacore.ir */ //ایجاد ماژول تاپ برای ارتباط گیری کلی و تعیین پورت ها module TOP_Module(MOSI,sck,cs,MISO,CLK_24M); //تعیین پورت های خروجی output wire MOSI,sck,cs; //تعیین پورت های ورودی input wire MISO,CLK_24M; //تعیین اتصالات بینا بینی wire [15:0] data; wire [35:0] CONTROL0; wire CLK_32M,Enable,CLK_16M,LOCKED; wire [7:0] s; //فراخوانی ماژول های مورد استفاده ADC128S102 U1 (MOSI,data,sck,cs,MISO,CLK_32M,Enable,CLK_16M,s,LOCKED); CLOCK U2 (CLK_24M,NO_USE,CLK_16M,CLK_32M,LOCKED); ICON U3 (CONTROL0); VIO U4 (CONTROL0,data,{Enable,s}); //پایان ماژول اصلی endmodule |
مشخص کردن پین های fpga
1 2 3 4 5 6 7 8 9 10 11 12 |
//www.octacore.ir ///PUBLIC NET "clk_24M" LOC = P50; ///ADCs NET "cs" LOC = P116; NET "MOSI" LOC = P119; NET "MISO" LOC = P118; NET "sck" LOC = P117; |
بررسی نتیجه نهایی گرفته شده
ضمیمه
خرید سخت افزار مورد نیاز
اگر علاقه مند به انجام این پروژه هستید و نیاز به تهیه سخت افزار های آن دارید می توانید به سایت پازج مراجعه کنید.
توجه
چند نکته برای کسانی که تازه کار هستند:
- از هسته VIO برای برای مقدار دهی از PC به FPGA و مقدار خوانی از FPGA به PC استفاده کرده ایم.
- از هسته ICON برای تبادل و ارتباط بین FPGA (VIO) با PC (JTAG) استفاده شده است.
- از هسته CLK برای تولید کلاک مورد نظر استفاده شده است.
اگر سوالی داشتید یا به مشکلی بر خوردید و یا پیشنهادی برای این پروژه داشتید در قسمت نظرات وارد کنید.
تشکر
برچسب ها:
adcadc 12 bitadc128s102analogbitconverterconvertordigitaldriver for adc128s102fpgafpga learning by verilogfpga projecthardwarepossedgeresulotionspartan6texas instrument adcuse adc by fpgaverilogxilinxآموزشآموزش پروژه محور وریلاگآموزش راه اندازیآنالوگاسپارتان6استفاده از مبدلاف پی جی ایبرنامه نویسی وریلاگبیتپازجدقتدوره آموزشیدیجیتالرایگانسخت افزارکدمبدلوریلاگ

درباره محمد حسین اصفهانی
فعال در زمینه الکترونیک و سخت افزار . از انیشتین آموختم اگر A در زندگی موفق باشد، سپس A برابراست با X + Y + Z. کار X است ، بازی Y است و Z یعنی بسته نگهداشتن دهان و انجام دادن کارهاست.برای دیدن اطلاعات بیشتر از من اینجا کلیک کنید.
نوشته های بیشتر از محمد حسین اصفهانی
22 درصدتخفیف

تخفیف استثنائي فروشگاه هشت هسته ، پروگرامر stk500 با کمترین قیمت و بالاترین کیفیت ! 187 تومان
مشاهده محصول
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام مطلب جالبی بود
ارادت