Перейти к содержанию
    

egorman44

Свой
  • Постов

    144
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные egorman44


  1. По мере погружения , появляются еще некоторый вопросы , требующие разъяснения :biggrin:

     

    Хотел спросить о генерации сигнала сброса . Порыскал на просторах и нашел в книге Полякова (это в главе посвященной верификации) следующее:

     

    initial 
    begin
        RESET_INV = 1'b0; 
        repeat(10) @(posedge SCLK);
        RESET_INV <= 1'b1;
    end

     

    Почему товарищ использует в одном initial блоке blocking и non-blocking assignment или для верификации так можно ? Я переправил ,

    RESET_INV = 1'b1;

    Вроде бы работает, но посмотрев RTL Viewer не увидел никакой синтезируемой схемы, привязанной к выходу RESET_INV, а лишь высокий уровень 1'h1 . Хотелось , бы услышать как ПРАВИЛЬНО исполнять сие?

     

     

  2. По мере чтения возникают вопросы.

    Во-первых правильно ли я понял, для синхронизации сигнала мне необходим синхронизатор :biggrin: (например два последовательных D- триггер). Он выглядит следующим образом:

     

    always @(posedge SCLK)
    begin
        a1 <= SDOFS;
        a2 <= a1;
        a3 <= a2;    
        SDOFS_risingedge <= ((~a3)&a2);
    end

     

    В таком случае , задержка при определение переднего фронта SDOFS составит 2 такта синхросигнала. Как мне говорит даташит

     

    "SDOFS Framing Signal Output for SDO Serial Transfers. The frame sync is one bit wide and is active one SCLK period

    before the first bit (MSB) of each output word. SDOFS is referenced to the positive edge of SCLK. SDOFS is in

    three-state when SE is low." ,

     

    После импульса SDOFS , длинной один такт SCLK, сразу следует первый бит посылки. Т.е. должен ли я исправить код на

     

    always @(posedge SCLK)
    begin
        a1 <= SDOFS;
        a2 <= a1;
        SDOFS_risingedge <= ((~a2)&a1);
    end

     

    чтобы не пропустить первый бит ? Или есть другие решения ?

     

  3. премного благодарствую !

     

    вот здесь капиталисты тоже рассматривают почему inferred latch есть плохо :rolleyes:

     

    http://electronics.stackexchange.com/quest...red-latches-bad

  4. Господа спасибо за пищу для размышлений ! будем читать значит :biggrin:

     

    и вопрос конечно офтоп , но хотелось бы очень узнать , как ближе перевести понятие "inferred latches" , что защелка это понятно, но какой смысл вкладывают в слово inferred ?

  5. Добрый день всем! Начал потихоньку осваивать Verilog . Сейчас хотелось сделать проектик для работу с микросхемой AD73322 (front-end processor для речи и телефонии).

     

    Протокол обмена между fpga и AD73322 следующий:

    1. Ждать импульса на линии SDOFS , говорит о том что сейчас будет прием, AD73322 будет передавать пакет fpga

    2. Затем принять 16 бит

    3. Сделать чего- нибудь с ними(принятыми битами)

    4. Сформировать импульс на линии SDIFS , говорит о том что сейчас будет передача ,AD73322 будет принимать пакет от fpga

    5. Передать 16 бит

     

    как я вижу задачу можно решить с применением FSM(Finite State Machine) дизайна . Просмотрев мануал "Synthesizable Finite State Machine Design Techniques Using the New SystemVerilog 3.0 Enhancements", я остановился на методе с применением 3-х always блоков.

     

    вопросы следующие:

     

    1. Правильно ли решать подобную задачу с помощью Finite State Machine Design? Есть ли альтернативы?

    2. Допусти у меня есть состояния wait_for_SDOF и ready_to_receive, переход из первого во второй осуществляется , по импульсу на линии SDOFS , как это должно выглядеть ? Мой вариант :

     

    always @(state,SDOFS) 
    begin
        next = 'bx;
        case (state)
            wait_for_SDOFS:     if     (SDOFS)                       next = ready_to_receive;
                            else                           next = wait_for_SDOFS ;
            
            ...
                                    
        endcase 
    end

     

    не надо ли использовать конструкцию

    posedge SDOFS

    , так как мне нужен именно переход из "0" в "1", но как использовать его в блоке always, если я его запихну туда, ничего хорошего думаю не получиться.

    Вообщем как поступают при ожидании синхронизирующего сигнала , как и в моей ситуации ?

  6. Здравствуйте дорогие форумчане. Разбираюсь с мк Atmel. Хотел выработать прерывание при достижении счетчиком какого либо числа. В регисры OCR1B(H/L) записал число до которого надобно считать, но не досчитав до заданного числа, флаги регистра TIFR1 : OCF1A, OCF1B, OCF1C получают значения логической единицы. После того как я инициализировал маску и разрешил прерывание программа уходит на вектор прерываний. необходимо ли сбрасывать флаги прерываний от МК или косяк в инициализации таймера/счетчика.

     

     

    .include "m640def.inc"	;
    .list					;
    .def	temp=R17		;
    .def	rab=R18			;
    
    .equ	kdel=30		;
    
    	;------- reservation of call
    
    	.dseg			;
    	.org	0x200	;
    
    buf:	.byte	1		;
    
    	;------- begining of program code
    
    	.cseg			;
    	.org	0		;
    
    	;------- redefining of interrupt vector
    
    start:	
    
    
    	jmp		init; Reset Handler
    	nop			;
    	reti 		; IRQ0 Handler
    	nop			;
    	reti		; IRQ1 Handler
    	nop			;
    	reti 		; IRQ2 Handler
    	nop			;
    	reti 		; IRQ3 Handler
    	nop			;
    	reti 		; IRQ4 Handler
    	nop			;
    	reti		; IRQ5 Handler
    	nop			;
    	reti 		; IRQ6 Handler
    	nop			;
    	reti 		; IRQ7 Handler
    	nop			;
    	reti 		; PCINT0 Handler
    	nop			;
    	reti 		; PCINT1 Handler
    	nop			;
    	reti 		; PCINT2 Handler
    	nop			;
    	reti 		; Watchdog Timeout Handler
    	nop			;
    	reti 		; Timer2 CompareA Handler
    	nop			;
    	reti 		; Timer2 CompareB Handler
    	nop			;
    	reti 		; Timer2 Overflow Handler
    	nop			;
    	reti 		; Timer1 Capture Handler
    	nop			;
    	reti 		; Timer1 CompareA Handler
    	nop			;
    	jmp prtim	; Timer1 CompareB Handler
    	nop			;
    	reti 		; Timer1 CompareC Handler
    	nop			;
    	reti 		; Timer1 Overflow Handler
    	nop			;
    	reti 		; Timer0 CompareA Handler
    	nop			;
    	reti 		; Timer0 CompareB Handler
    	nop			;
    	reti		; Timer0 Overflow Handler
    	nop			;
    	reti 		; SPI Transfer Complete Handler
    	nop			;
    	reti 		; USART0 RX Complete Handler
    	nop			;
    	reti 		; USART0,UDR Empty Handler
    	nop			;
    	reti 		; USART0 TX Complete Handler
    	nop			;
    	reti 		; Analog Comparator Handler
    	nop			;
    	reti 		; ADC Conversion Complete Handl
    	nop			;
    	reti 		; EEPROM Ready Handler
    	nop			;
    	reti 		; Timer3 Capture Handler
    	nop			;
    	reti 		; Timer3 CompareA Handler
    	nop			;
    	reti 		; Timer3 CompareB Handler
    	nop			;
    	reti 		; Timer3 CompareC Handler
    	nop			;
    	reti 		; Timer3 Overflow Handler
    	nop			;
    	reti 		; USART1 RX Complete Handler
    	nop			;
    	reti 		; USART1,UDR Empty Handler
    	nop			;
    	reti 		; USART1 TX Complete Handler
    	nop			;
    	reti 		; 2-wire Serial Handler
    	nop			;
    	reti 		; SPM Ready Handler
    	nop			;
    	reti 		; Timer4 Capture Handler
    	nop			;
    	reti 		; Timer4 CompareA Handler
    	nop			;
    	reti 		; Timer4 CompareB Handler
    	nop			;
    	reti 		; Timer4 CompareC Handler
    	nop			;
    	reti 		; Timer4 Overflow Handler
    	nop			;
    	reti 		; Timer5 Capture Handler
    	nop			;
    	reti 		; Timer5 CompareA Handler
    	nop			;
    	reti 		; Timer5 CompareB Handler
    	nop			;
    	reti 		; Timer5 CompareC Handler
    	nop			;
    	reti 		; Timer5 Overflow Handler
    	nop			;
    	reti 		; USART2 RX Complete Handler
    	nop			;
    	reti 		; USART2,UDR Empty Handler
    	nop			;
    	reti 		; USART2 TX Complete Handler
    	nop			;
    	reti 		; USART3 RX Complete Handler
    	nop			;
    	reti 		; USART3,UDR Empty Handler
    	nop			;
    	reti 		; USART3 TX Complete Handler
    	nop			;
    
    
    int_ret: reti		
    
    	;------ initialization module
    init:
    
    	ldi r16, high(RAMEND)	;
    	out SPH,r16 			; Set Stack Pointer to top of RAM
    	ldi r16, low(RAMEND)	;
    	out SPL,r16				;
    
    
    
    
    
    	;------ I/O ports initialization
    
    
    	ldi		temp,0xFF	;
    	sts		DDRL,temp	;
    
    	;------ Timer 1 initialization
    
    	ldi		temp,0x01	;
    	sts		TCCR1B,temp	;
    	ldi		temp,high(kdel); 
    	sts		OCR1BH,temp	;
    	ldi		temp,low(kdel);
    	sts		OCR1BL,temp	;
    
    	;------ define interrupt mask
    
    	ldi		temp,0x04	;			
    	sts		TIMSK1,temp	;
    
    	;------ comparator initialization
    
    	ldi		temp,0x80	;
    	out		ACSR,temp	;
    	sei					;
    
    	;------	begining of main function
    
    main:
    	ldi		rab,0x80	;
    	ldi		temp,0xFF	;
    	sts		buf,rab		;
    	eor		temp,rab	;
    	sts		PORTL,temp	;
    
    m1:		rjmp	m1			;
    
    	;------ interrupt subprogram
    
    prtim:	push	temp		;
    	push	rab			;
    
    	lds		rab,buf		;
    
    	;------ left shift
    
    p1:		
    	lsr		rab			;
    	brcc	p3			;
    	ldi		rab,0x80	;
    
    p3:		
    	ldi		temp,0xFF	;
    	eor		temp,rab	;
    	sts		PORTL,temp	;
    
    	sts		buf,rab		;
    
    	pop		rab			;
    	pop		temp		;
    
    	reti				;
    

  7. вообще не подводят трассу ширина которой больше площадки, д.б. термобарьер

    1.в CES пропишите ширину трасс 2мм 1мм 0,5мм и при подводе к площадке по ПКМ выберите 1 или 0,5мм

    2.если таких компанентов много и делать лень то сделать RuleArea для данного компанента

     

    дак там и при ширине 2 мм , уже чем площадки получается

    ---

    т.е. как я понял нет такой возможности провести 2 мм трассу от пункта А к Б не сужая ее у контактной площадки?

  8. Добрый день товарищи. Подскажите как убрать ограничение ширины трасс. Мне надобно провести дорожку шириной 2 мм. в ces я убрал ограничение между трассой и падом, но теперь из-за скругления трассы , она наезжает на соседнюю контактную площадку, при попытке увеличение ширины трассы. expedition ругается: "At least one width could not be performed: it causes a DRC violation'

    post-74507-1374645379_thumb.png

  9. Добрый день господа, а день добрый- выходной!

     

    Подскажите пожалуйста , у меня допустим имеется микросхема с двумя одинаковыми выводами , к примеру gnd. Могу ли я в symbol editor нарисовать один пин gnd, а затем в pаrt editor присвоить два контакта этому выводу gnd? и что такое number of slots in component - при выгрузе символа из symbol editor?

    заранее спасибо

  10. Ребяты , господа , товарищи!!!! это гениально!!!) теперь все встает на свои места) ведь ясно же ш что с коллектора T2, Т1 берет напряжение смещения!!! УРА, УРА ,УРА!!! снимаю шляпу перед всеми!!! СПАСИБО !!!

  11. Добрый день господа! любители и профессионалы в области электроники !

    Изучаю учебник М.Х. Джонса Электроника практический курс. Столкнулся со схемой описанной в параграфе 5.9.6. Малошумящий двухтранзисторный усилитель напряжения. Возник вопрос как работает сея штуковина.

    Не пойму как задается коллекторный ток Т1=100 мкА, не вижу как задается смещение транзистора T1. Интересно будет ли работать данная схема?! Не пойму принцип работы обратной связи по постоянному току (за счет резистора R4),стабилизирущей режим покоя. Пожалуйста помогите чем сможете?)

    post-74507-1369056710_thumb.jpg

  12. Господа помогите разобраться.

    Досталось мне переделать проект, заменил компоненты в DC скомпелировал CDB, сделал Package Design, в Exp провел прямую аннотацию, стал трассировать, вкл cross probe , и получил что ref des компонента в expedition не совпадает с ref des в DC. что делать?

     

    ----

     

    да и Routed_pins до сих пор не активна :biggrin:

×
×
  • Создать...