Jump to content

    

lyaksandrov

Участник
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

0 Обычный

About lyaksandrov

  • Rank
    Участник

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Вообщем много что перечитал, попробовал сделать, вроде что-то получилось, но не знаю так ли это должно работать))? Делал со скоростью 57600 module RS232Receive( input clk, input rx, output reg [5:0] data, //liniya dannix output reg dataReady, //liniya gotovnosti output reg error //signal oshibki ); parameter Idle = 2'b00; //ojidanie parameter StartBit = 2'b01; //startbit parameter DataBit = 2'b10; // bit dannix parameter StopBit = 2'b11; //stopbit parameter Divider = 16'd278; //delitel schetchika reg [3:0] state, nextState; //registri sostoyaniya 1 tekyshee i 2 sledyeshee reg [3:0] bitCount; //schetchik bit reg [8:0] tickCount; //schetchik impylsov kvarcovogo generatora reg [5:0] rData; //reg sbora prinyatogo bayta initial begin //NASHALNOE SOSTOYANIE REGISTROV state = Idle; nextState = Idle; rData = 0; bitCount = 4'b0000; tickCount = 0; error = 1'b0; end always @(posedge clk) //po perednemy fronty taktovogo signala prisvaivaem tekyshemy sostoyaniya begin state = nextState; case(state) //sostoyanie ojidaniya Idle: begin rData = 8'h00; //sostoyanie ojidanie sbrasivaem registr prinyatogo bayta tickCount = 0; bitCount = 4'b0000; error = 1'b0; if (rx == 1'b0) begin nextState = StartBit; end //esli na vhode 0, to sledyysheem sostoyaniem bydet startbit end StartBit: begin //shitaem impylsi, esli ih polovina ot vsei dlitelnosti bita to proveryaem sostoyanie linii dannix tickCount = tickCount + 1; if (tickCount[8:0] == Divider[15:1]) begin if (rx == 1'b0) //esli 0 to oshibki net begin error = 1'b0; end else begin error = 1'b1; //esli 1 to oshibka i perehodim s sostoyanie ojidaniya nextState = Idle; end end else if (tickCount == Divider) //esli doshitali do konca bita, to sbrasivaem chetchiki i perehodim v sostoyanie priema begin tickCount = 0; nextState = DataBit; end end DataBit: begin tickCount = tickCount + 1; if (tickCount[8:0] == Divider[15:1]) //takje schitaem do chentra bita begin rData[bitCount] = rx; // v registr ykladivaem kajdii schitaniy bit bitCount = bitCount + 1; //shitaem biti end else if (tickCount==Divider) // kak doshli do konca bita begin tickCount = 0; //sbrasivaem schetchik esli prishlo eshe ne 6 bit to ostaemsya tyt je if (bitCount == 6) begin bitCount = 0; nextState = StopBit; end //esli prishlo 6, to perehodim k priemy stop bit else nextState = DataBit; end end StopBit: begin tickCount = tickCount + 1; if (tickCount[8:0] == Divider[15:1]) begin if (rx == 1'b1) //proverka sostoyaniya vhodnoi linii, esli 1 to vse OK, esli 0 to oshibka begin error = 1'b0; data = rData; //vistavlyaem na vihod registr prinyatogo bayta dataReady = 1'b1; //signal gotov end else begin error = 1'b1; //oshibka dataReady = 1'b0; nextState = Idle; //perehodim v ojidanie end end else if (tickCount == Divider) begin dataReady = 1'b0; tickCount = 0; nextState = Idle; end end default: state = Idle; endcase end endmodule //////////////////////////////////////////// module RS232Receive_tb; reg clk; wire [5:0] data; wire dataReady; wire error; reg rx; RS232Receive r( .clk(clk), .data(data), .dataReady(dataReady), .error(error), .rx(rx) ); always #5 clk = ~clk; initial begin clk = 0; #5; rx = 1; #520800; rx = 0; #52080; //start rx = 0; #52080; rx = 1; #364560; rx = 1; #260400; end endmodule
  2. Всем, привет. Сразу скажу, что в проектировании на ПЛИС я полный 0. Но выпала такая потребность (для учебы) создать приемник rs 232. Посмотрел много всего, но так и не разобрался и ни один код не заработал. Требуемые параметры 16 МГц Скорости 57600 и 115200, Бит четности Odd 6. Может кто направить или подсказать с чего начать делать? Возможно у кого-то есть свои наработки. Язык использую Verilog.
  3. Независимые каналы должны быть, тк течет ток и снимается напряжение по 4х проводной схеме измерения сопротивления
  4. Где можно посмотреть или почитать как и куда подключать sync к микроконтроллеру?
  5. ЦАПы все одной разрядности, если можно, можете поподробнее про SYNC и GPIO? Это значит просто подключать их к пинам у которых тип I/O? Все 8 пинов MOSI ЦАПА подключать к одному пину MOSI (PA7) микроконтроллера? Так будет правильно?
  6. Всем привет, возник вопрос как подключить 8 отдельных ЦАП (AD5621BKSZ-500RL7) к микроконтроллеру stm32f103c8t7?
  7. Нужно доработать эту, понять почему напряжение смещается, а не остается в 0
  8. Всем привет, хочу понять, почему так ведет себя схема на ОУ, а именно есть генератор импульсных сигналов от 0 до 3В, при подаче на 1 усилитель я меняю среднюю точку на 10В, далее сигнал попадает на 2 усилитель, где усиливается сигнал от 0 до 20В, затем идет на преобразователь напряжения в ток. Но когда меняю на генераторе импульсных сигналов напряжение от 0.5 до 2.5В, то есть оставляю среднюю точку 1.5В, затем подаю сигнал на 1 усилитель, тем самым поднимаю среднюю точку до 10В, далее когда сигнал переходит на 2 усилитель и усиливает сигнал от 2.45 до 16.45В. И самое главное вопрос! почему сигнал не остался в 0, а сместился до 2.45В, и как-нибудь можно это исправить, чтоб он оставался в 0?
  9. Tanya вроде про нагрузку все сказал, она изменяется от 5кОм до 15кОм, куда подключается? Я ответил что нагрузки это R8 и R10, можете посмотреть рисунок схемы. Точность и скорость не важно на данном этапе, сейчас мне требуется коррекция схемы, для этого я попутно задаю требуемые вопросы. Если я буду писать хочу сделать прибор, который от микрухи берет генерируемые импульсные сигналы, затем, усиливает их, и подает их в нагрузку. Усиливает так, чтоб ток в нагрузке мог быть от 0.1мА до 2мА с учетом плавающей нагрузки, которая не должна влиять на ток, так лучше будет?
  10. Еще появился один вопрос. Когда подаю импульсы от 0 до 3 вольт, на выходах out2 и out3 (смотри схему) напряжения от 0 до 20В. Но когда меняю начальные импульсы от 1.5 до 4.5 вольт, на выходе out3 напряжение становится от 0 до 10В, а на out2 от 10В до 20В. Почему так происходит, и как мне сделать на выходе out2 такое же напряжение как на out3??
  11. Понял, 20 не хватит, значит буду думать где брать еще Возможно сделать так, что бы нагрузка была одна и в ней был ток от -2 до 2 мА? Возможно использовать диф усилитель или еще что нибудь?
  12. Немного не понимаю, почему V1 5В а V2 35?, в моей схеме к сожалению могу выдать только 20В В своей схеме использовал ту же схему, что и вы предоставили
  13. я пробывал сделать, тоже самое только на диф усилителе, там будет 1 резистор нагрузки с током от -2мА до 2мА, но при его изменении менялся ток, что очень плохо(
  14. у меня есть схемка, но я не знаю правильно ли она работает. Еще есть один вопрос по поводу датчика тока, для нагрузки. Хилла читал, но не получается, сделать данный датчик. Переискал весь интернет, но везде схемы с заземленной нагрузкой.