프로그래머와 사용자의 차이점은 무엇입니까? 시스템 관리자와 프로그래머의 차이점. 구성 가능한 논리 블록

소프트웨어 제품을 다루는 맥락에서 사람들은 사용자와 프로그래머(유지관리자, 구현자 등)로 구분됩니다. 이 기사에서는 이 두 범주 간의 관계를 다룹니다. 아마도 이는 젊은 전문가와 사용자 간의 갈등을 해결하는 데 도움이 될 것입니다.

대부분의 사용자는 자동화와 관련하여 매우 보수적입니다. 시스템 변경의 타당성을 사람에게 설득하는 것은 매우 어려울 수 있습니다(연결 문제가 발생하고 한동안 두 시스템에서 동시에 작업해야 하며 새 시스템에서는 일반적인 작업을 수행하는 데 다른 접근 방식이 필요할 수 있습니다). 새로운 시스템에 점진적으로 적응하면서 사용자는 모든 장점을 높이 평가할 것이며 이전 시스템에 비해 이는 프로그래머에게 최고의 보상입니다.

작은 메모 하나.

대부분의 사용자는 시스템 관리자, 프로그래머 또는 Unixoid의 차이점을 전혀 모릅니다. 그들에게 프로그래머란 컴퓨터를 고치고, 인터넷에서 모든 것을 찾고, 끊어진 전선을 납땜하고, 하드 드라이브에서 삭제된 정보를 복원할 수 있다는 것을 의미합니다. 물론 이것은 전적으로 사실이 아니지만 이것은 일반 사용자의 마음 속에있는 프로그래머의 이미지입니다.

시스템을 설치하고 추가로 작동할 때 특별한 주의가 필요한 몇 가지 사항은 다음과 같습니다.

  • 모든 사용자는 작동 중에 주기적으로 발생하는 모든 문제를 알고 있는 동일한 전문가와 함께 작업하는 것을 선호합니다. 따라서 가능하다면 다른 전문가가 귀하의 고객과 협력하는 상황을 피하십시오.
  • 조언을 너무 방해하지 마세요. 특히 요청을 받지 않은 경우에는 더욱 그렇습니다. 그리고 자신의 관점을 고집하지 마세요. 단지 자신의 의견을 표현하는 것만으로도 충분합니다. 최종 결정은 사용자에게 맡기세요.
  • 프로그래밍뿐만 아니라 고객의 전문 분야에 대한 지식을 향상시키기 위해 노력하십시오. 이를 통해 동일한 언어로 의사소통할 수 있습니다. 사용자는 자신의 전문적인 활동과 관련된 질문을 자주 합니다.
  • 사용자는 시스템이 오류 없이 지속적으로 작동하기를 원합니다. 그는 자신의 시스템이 실패한 이유를 설명하는 데 거의 관심이 없습니다. 어떤 일이 발생하면(항상 작업 프로세스의 일부임) 사용자는 책임이 누구에게 있고 언제 시스템이 수정될 것인지 알아야 합니다.
  • 사용자는 부서 구조 변경 및 입법 변경에 대해 항상 미리 알고 있지만 시스템 업데이트시기에 대해 물어볼 때까지 기다리지 마십시오. 항상 사용자에게 그러한 정보를 최신 상태로 유지하십시오.

이제 프로그래머가 되는 것이 유행이 되었습니다. 성공적인 프로그래머에 대한 영화가 제작되고, 책이 집필되며, 많은 국가에서 개발자는 높은 보수를 받습니다. 그러나 "기술자"와 혁신에 대한 유행에도 불구하고 프로그래머에게는 알려진 사실이 다른 사람들에게는 놀라운 일이 많이 있습니다. Quora 기고자들은 이러한 사회문화적, 인지적 차이에 대해 논의했습니다. 다음은 토론에서 가장 흥미로운 의견입니다.

따라서 프로그래머는 일반 사람들과 달리 다음과 같이 합니다.

1. 그들은 영화 속 모든 강도 장면이 완전히 넌센스라는 것을 이해합니다. 예를 들어 영화 속 'IT 전문가' 화면에 나타나는 코드가 실제로 어디에서 왔는지 읽을 수 있습니다. 일반적으로 프로그래머에 대한 많은 영화 고정관념은 말도 안되는 것이라고 Bill Coleman은 다음과 같이 썼습니다. “우리는 모두 뚱뚱하고 게으른 천재가 아닙니다. 실생활에서 우리는 정상적으로 의사소통하는 방법을 알고 있습니다. 우리의 일은 그것에 달려 있습니다. 그리고 우리를 전기 기술자와 혼동하지 마십시오. 많은 사람들이 집에 납땜 인두조차 갖고 있지 않습니다.”

초보자를 위한 주요 "해킹" 효과는 개방형 콘솔입니다. “대부분의 사람들은 내가 실제로 일할 때 화면만 바라보며 시간을 보내고 있다고 생각할 것입니다. 하지만 콘솔을 열고 타이핑을 시작하자마자 그들은 내가 국방부를 해킹하거나 다른 마법 같은 일을 하려 한다고 확신할 것입니다.”라고 토론 참가자 중 한 명이 썼습니다.

2. 작업하는 동안 25%의 시간은 생성 중인 애플리케이션에서 사용자가 "중단"할 수 있는 부분을 파악하는 방법에 대해 고민합니다. “모든 것이 제대로 작동한다면 프로그램이 무엇을 해야 하는지에 대한 규칙을 작성하는 것은 상대적으로 쉽습니다. 문제가 발생할 경우 프로그램이 수행해야 하는 작업에 대한 규칙을 작성하는 것이 훨씬 더 어렵습니다.”라고 Kim Moser는 썼습니다. 동시에 많은 사용자는 프로그램이 더 똑똑하고 지식이 풍부한 친구처럼 작동해야 한다고 믿습니다.

3. 그들은 사실 사용자가 매일 사용하는 가장 중요한 소프트웨어에도 기적처럼 작동하는 전체로 합쳐지는 엄청난 양의 "목발"이 포함되어 있다는 것을 알고 있습니다. 토론 참가자 중 한 명인 Ben Cherry는 "이것은 보잉을 분해하고 브레이크가 서로 테이프로 붙어 있다는 것을 발견하는 것과 같습니다."라고 썼습니다. 프로그래머는 엄청난 양의 의료, 금융 및 개인 정보가 무시할 수 있는 수준의 시스템 보안으로 저장되어 있다는 것을 알고 있습니다.

5. 그들은 예를 들어 사람의 손에 여섯 개의 손가락이 있다면 세계의 주요 숫자 체계는 지금처럼 10이 아니라 십진수가 될 것임을 알고 있습니다.

6. 그들은 계산기 없이도 보통 사람보다 더 많은 2의 거듭제곱을 말할 수 있습니다. 100k와 같은 표현에서 약어 "k"는 "x1000"이 아니라 "x1024"로 이해됩니다. 그러나 대부분의 일반 사람들은 프로그래밍이 주로 수학에 관한 것이라고 생각하는 반면, 프로그래머는 논리가 우선이라는 것을 알고 있습니다.

7. 그들은 인터넷상의 일들이 얼마나 복잡하고 단순한지 알고 있습니다. 결국, 인터넷 검색과 같은 간단한 작업은 실제로 다양한 수준의 많은 복잡한 프로세스에 의해 지원됩니다.

8. 대부분의 사람들은 자신이 원하는 것을 설명하려고 할 때 너무 모호하다고 믿으십시오.


9. 친척, 친구, 지인 중 평범한 사람들이 끊임없이 "컴퓨터를 고쳐 달라"고 요청하면 화를 낸다.

10. 코드의 아름다움은 시에 비유될 수 있지만 사용자에게는 오류 메시지만큼 끔찍해 보일 것입니다.

몇 년 전, “무슨 일을 하세요?”라는 질문을 받았을 때. 의미심장하게 눈썹을 움직이며 "컴퓨터 괴짜"라고 말할 수 있습니다. 그것으로 충분했습니다. 기껏해야 이력서에 한 줄만 자랑할 만큼 준비가 안 된 사람들에게 세세한 사항을 설명하는 것은 '자신감 있는 PC 사용자'라 할 만큼 불필요한 일이었다. 그러나 시대가 변하고 읽고 쓰는 능력이 향상되고 있으며 이제 "자신감 있는 PC 사용자"가 격세화되면서 한때 보편적인 단어인 "컴퓨터 전문가"가 뒤따릅니다.

프로그래머와 개발자의 직업은 공통점이 많으며 일상 생활에서 이러한 단어는 종종 동의어로 사용되지만 항상 눈에 띄는 것은 아니지만 차이점이 있습니다. 그렇지 않다면 왜 소프트웨어 개발자, 컴퓨터 과학자, 프로그래머와 같은 개념이 등장했을까요?

프로그램 작성

오늘날에는 누가 프로그래머이고 누가 개발자인지 명확하게 정의된 규칙이 없습니다. 그러므로 근원으로 돌아가는 것 외에는 다른 길은 없습니다.

컴퓨터, 인터넷, 모바일 통신 및 현재 공공 영역에 있는 기타 여러 가지 놀라운 것들이 군대에 의해 발명되지는 않더라도 조만간 그들의 민감한 날개와 감독하에 놓이게 되었습니다. 무언가가 날고, 쏘고, 폭발하거나 유사한 적의 행동으로부터 보호할 수 있다면 과학자 팀이 있습니다. 서명하고 받으십시오. 첨단 기술 시대에 과학자가 없는 군인은 어려움을 겪을 것입니다. 결국 전투화와 방탄복과 같은 작은 것에도 많은 기술 노하우가 흡수되었습니다. 레이저 총과 대륙간 미사일 프로그래밍에 대해 무엇을 말할 수 있습니까?

국가가 자금 조달을 위해 돈을 찾도록 자극한 필요가 없었다면 수십 년 후 우리가 컴퓨터와 인터넷을 마음대로 사용할 수 있었을지는 알 수 없습니다. 따라서 아직 시간이 없었던 사람들은 전쟁의 불 속에서 새로운 기술을 탄생시키고 계속해서 탄생시킨 침략자 국가에 정신적으로 감사할 수 있습니다.

그리고 수십 년이 지난 후에도 미래로 나아갔음에도 불구하고 빌 게이츠가 자신의 차고에서 길이 17m, 높이 2.5m가 넘는 컴퓨터를 조립할 것이라고 상상하기는 여전히 어렵습니다. 이 컴퓨터는 765,000개의 부품으로 구성되며 15개 부품을 사용하여 동기화됩니다. 미터 샤프트이며 1941년 IBM과 계약을 맺고 여러 하버드 수학자들이 개발한 Mark-1과 같은 5마력의 전기 모터로 구동되었습니다.

이것은 너무 노동 집약적이고 두뇌 집약적이어서 역사적으로 컴퓨터를 만든 사람은 누구나 컴퓨터를 "춤추는" 일이 있었습니다. 컴퓨터는 거의 없었습니다. 전쟁이 끝날 때까지 동일한 "Colossi" 중 10대만 작동했습니다. 불과 몇 년 후 IBM 701(첫해에 19대가 판매됨) 또는 IBM 650(첫해에 이미 450대가 판매됨)과 같은 최초의 상용 모델이 등장하기 시작했습니다. 과학 실험실, 항공사, 정부 기관.

그리고 1965년 이래로 미국인들은 "단지" 18,000달러의 비용이 드는 수천 개의 PDP-8을 생산하기 시작했지만 메모리 아키텍처가 불완전하여 상당한 수의 자원을 요구하는 프로젝트가 실패했습니다. 따라서 그 당시 프로그래밍은 쉽지 않았고(하드웨어 안녕하세요) 지금처럼 편리하고 접근하기가 전혀 쉽지 않았습니다. 프로그래밍을 할 줄 아는 사람은 소수에 불과했습니다. 이것으로 뭔가를 얻을 수 있는 사람은 훨씬 더 적습니다. 그리고 이 모든 시간 동안 프로그래머는 같은 스웨터를 입고 도서관 단골로 활동하는 "괴짜"라는 명성을 당연히 유지합니다. 대중이 접근할 수 없는 아주 좁은 분야에서 활동하는 외계 천재.

역사적으로, 이름으로 기계와 대화하는 방법을 아는 두뇌를 가진 사람들은 군산복합체나 과학 분야에서만 일했습니다. 여기에서 진정한 프로그래머역사적 의미에서 이는 국방/무기 단지용 프로그램, 일부 설계국이나 과학 연구소의 컴퓨팅 성능용 프로그램, 로봇 프로그램, 우주 비행용 로켓 등을 작성하는 사람입니다. 전적으로 국가적으로 중요한 문제입니다. 최대의 혁신. 금전적 이자가 없거나 2위를 차지합니다. 대중은 아폴로 프로그램에 얼마나 많은 돈이 쓰였는지 신경 쓰지 않는 것처럼 컴퓨터와 인터넷 발명가에게 수십억 달러를 기부했는지 신경 쓰지 않습니다. 하지만 이제는 모든 사람의 주머니에 컴퓨터가 있고 달에는 깃발과 부츠 자국이 있습니다. 부자는 아무도 기억하지 않지만 혁신가는 모두가 기억합니다. 전자는 소비하고 후자는 기부하기 때문입니다.

개발

순수한 형태의 상용 프로그래밍은 존재하지 않았고 지금도 존재하지 않습니다. 여기서 "프로그래밍"이라는 단어는 분명히 적합하지 않습니다. 여기 개발- 또 다른 한가지. Microsoft, IBM, HP, Apple 및 기타 컴퓨터 선구자들이 시장을 장악하고 엄청난 돈을 벌고 있다는 사실은 각각의 신제품이 한 단계 더 발전했다는 사실을 바꾸지 못했습니다. 그들은 새롭고 사소하지 않은 문제를 해결했습니다.

토발즈는 프로그래머였나요? 물론. 결국 그는 Linux 커널을 작성했습니다. 이 경우 작업 과정에서 모범 사례와 개발 방법론을 사용했는지 여부(예: 변수 이름을 올바르게 지정했는지, 메모리를 최적으로 사용했는지 등)는 전혀 중요하지 않습니다. 가장 중요한 것은 그것이 작동한다는 것입니다. 그리고 승자는 평가되지 않습니다. JavaScript 창시자인 Brendan Eich가 객관적으로 그럴 만한 이유가 있음에도 불구하고 평가되지 않는 것처럼 말입니다.

천재이자 0과 1의 시간제 상사가 표준 문제를 해결하는 것뿐이라면 프로그래머인 Torvalds와 Eich보다 더 똑똑한가요? 예를 들어, 그는 온라인 상점에 글을 씁니다. 주요 질문 : 특수 부대에서 복무했지만 현재 상점 경비원으로 일하는 사람, 특수 부대 군인 또는 경비원입니까? 많은 경비원은 자신의 눈에 더 잘 보이기 위해 군대 문신을 의미있게 문지르며 스스로를 특수 부대라고 부릅니다. 자신의 직업 옆에 '이전'이라는 단어를 붙이는 사람은 거의 없습니다. 그러나 자격을 잃어 보안을 유지하거나 자신이 차지하는 위치에 비해 너무 냉정하여 참새에게 대포를 발사한다는 것을 인정하는 사람은 소수에 불과합니다.

오늘날의 프로그래머 중 일부는 분명히 제자리에서 벗어나 돈 버는 일에만 전념하고 자신의 재능을 낭비하는 특수 부대 군인과 똑같습니다. 자신을 프로그래머라고 부르지만 실제로는 개발자인 훨씬 더 큰 범주의 사람들(99%)이 있습니다(이 범주에는 불량배 코더도 포함됩니다). 그들은 자신이나 다른 사람의 코드를 작성 및 변경하고, 고객과 통신하고, 지속적으로 버그를 수정합니다. 왜냐하면 개발자가 이를 허용할 수 있기 때문입니다. 그들은 아이디어를 위해서가 아니라 돈을 위해 일합니다. 오늘은 한 사람을 위해, 내일은 다른 사람을 위해. 누가 더 많이 줄까요?

한 학자가 말했듯이, “철학에 관한 논문은 혁명으로 끝나야 하며, 그렇지 않으면 논문이 아닙니다.” 또는 우리 의견으로는 프로그래머의 작업은 기술적 혁신으로 끝나야 합니다. 그렇지 않으면 이것은 프로그래머의 작업이 아닙니다.

그리고 "첫 번째 카테고리 소프트웨어 엔지니어"의 고용 기록이 오해의 소지가 없도록 하십시오. 인사담당자들 스스로도 자신들이 무엇을 하는지 모르고 25년 전 사라진 나라의 우표를 이용하고 있습니다. 당신이 해야 할 일은 “지금 무슨 일을 하고 있나요?”라는 선도적인 질문을 던지는 것뿐입니다. 복잡하고 이해하기 어려운 아키텍처, 많은 의존성과 두뇌를 자극하는 요소로 가득 차 있어 특별한 정신 능력이 필요한 복잡한 개발을 원하는 만큼 수행할 수 있기 때문입니다. 그러나 이것이 온라인 상점, 또 다른 가짜 "서비스", 스팸 로봇 또는 신이 금지한 브라우저 게임이고 그 사람이 여가 시간에 프로그래밍을 하지 않는다면 개발 냄새가 납니다. “유전 개발”이라는 문구처럼요.

그러므로 “무엇을 하시나요?”라는 질문에 좀 더 정확한 대답은 “본질은 프로그래머지만 개발자로 일하고 있습니다”, “나는 개발자지만 언젠가는 프로그래머가 될 것입니다”, “나는 개발자입니다. 양배추." 부정확하고 빠른 답변이 필요한 상황에서는 결국 '프로그래머'를 이해할 수 있습니다. 개발자소프트웨어의 맥락에서 이 단어는 비교적 새로운 것입니다. 하지만 아웃소싱 외곽에서 주스를 마시면서 자신을 프로그래머라고 부르는 것은 자신을 속이는 것입니다.

FPGA는 "Field Programmable Gate Array"의 약자로 언제 어디서나 프로그래밍하고 재구성할 수 있는 거대한 게이트 배열입니다. 많은 사용자는 여전히 FPGA가 무엇인지 이해하지 못합니다. "거대한 게이트 세트"는 모델에 대한 간단한 설명입니다. 일부 FPGA에는 메모리 컨트롤러, 고속 통신 인터페이스, PCIe 엔드포인트 등 하드 블록이 내장되어 있습니다. FPGA 내부에는 자유롭게 서로 연결할 수 있는 게이트가 많이 있습니다. 작동 원리는 개별 논리 요소 마이크로 회로를 연결하는 것과 다소 유사합니다. FPGA는 세계 최고의 회사인 Xilinx, Altera 및 Microsemi에서 생산됩니다.

FPGA 개발의 역사

FPGA 산업은 PROM 프로그래밍 가능 읽기 전용 메모리와 PLD 논리 장치에서 성장했습니다. 1970년에 Philips는 현장 프로그래밍이 가능한 매트릭스를 발명했습니다. 두 가지 계획으로 구성된 이러한 FPGA 설계에서는 프로그래밍 가능한 유선 "AND" 또는 "OR"이라는 논리 회로의 특정 구현이 달성되었습니다. 이를 통해 그녀는 Sum of Products 형태로 함수를 구현할 수 있는 기회를 얻었습니다.

Altera는 1983년에 설립되었으며 이미 1984년에 업계 최초의 재프로그래밍 가능 논리 장치인 EP300을 출시했습니다. 패키지에 석영 창이 포함되어 있어 매트릭스에 자외선 램프를 사용하여 EPROM 태그를 제거할 수 있었습니다.

비용과 속도 문제를 극복하기 위해 고정된 "OR" 게이트에 단 하나의 프로그래밍 가능한 "AND" 입력만 포함하는 프로그래밍 가능한 어레이 로직이 개발되었습니다. PAL 및 PLA는 다른 변형과 함께 SPLD(간단한 프로그래밍 가능 논리 장치)로 그룹화됩니다. 블록의 소프트웨어 상호 연결을 위해 제공된 상호 연결과 함께 단일 칩에 통합된 이러한 FPGA는 증가하는 기술 요구 사항을 충족하는 데 사용되었습니다. 이를 포괄적 PLD라고 하며 Altera에서 개발했습니다.

트랜지스터는 게이트 어레이 마스크를 기반으로 프로그래밍할 수 있는 또 다른 종류의 전자 장치입니다. 이는 맞춤형 와이어를 사용하여 연결할 수 있는 트랜지스터 어레이로 구성됩니다. 그들은 논리 블록을 사용하여 사용자가 생산 실험실이 아닌 현장에서 구성할 수 있도록 했습니다.

최초의 상업적으로 실행 가능한 FPGA를 개발하려는 아이디어는 Xilinx의 공동 창립자인 Ross Freeman과 Bernard Vonderschmitt의 것입니다. XC2064는 1985년에 개발되었으며 3개의 조회 테이블이 있는 64개의 구성 가능한 논리 블록으로 구성되었습니다. FPGA가 무엇인지에 대한 현대적인 이해를 제공합니다. 6,000,000개의 재프로그래밍된 게이트가 있는 컴퓨터를 만들려는 Steve Casselman의 제안된 실험이 미 해군 수상전 부문에서 후원자를 찾았고 1992년에 특허를 받은 것은 1980년 후반이었습니다.

1990년 말에는 FPGA 업계의 경쟁이 치열해졌고 Xilinx의 시장 점유율은 하락하기 시작했습니다. Actel, Altera, Lattice, QuickLogic, Cypress, Lucent 및 SiliconBlue와 같은 플레이어는 Xilinx와 함께 글로벌 FPGA 시장에서 틈새 시장을 개척했습니다. 1997년 Adrian Thompson은 FPGA 프로그래밍과 유전자 알고리즘 기술을 FPGA와 결합하는 데 성공하여 Evolvable의 새로운 시대를 열었습니다.

오늘날 FPGA는 매우 저렴해졌으며 소비자 시장에서 계속해서 인기를 얻고 있습니다. 이는 상호 연결 네트워크로 둘러싸인 LUT라는 논리 셀 세트로 구성되어 사실상 모든 디지털 알고리즘을 구현할 수 있는 유연한 시스템을 제공합니다.

프로그래밍 원리

초보자를 위한 FPGA 프로그래밍은 FPGA에서 솔루션을 학습하고, 계획하고, 설계하고, 구현하는 과정입니다. 레이아웃의 수와 유형은 프로그램마다 다릅니다. 요구 사항 문서를 작성하고 제안된 솔루션이 구현되는 방법을 설명하는 설계 문서를 작성하는 것은 잠재적인 문제를 해결하는 데 매우 도움이 될 수 있습니다.

고품질 디자인 문서를 만드는 데 소요되는 시간은 향후 리팩토링, 디버깅 및 오류 수정에 소요되는 시간을 절약해 줍니다. FPGA 프로그래밍을 사용하여 솔루션을 구현하려면 설계 도입 방법 중 하나를 사용하여 프로젝트를 생성해야 합니다. 여기에는 Verilog 또는 VHDL과 같은 회로도나 HDL 코드가 포함됩니다. FPGA는 Altera의 FPGA 프로그래밍 도구를 사용하여 물리적 FPGA 장치에 대한 출력 파일을 프로그래밍할 수 있습니다. 도식 설계의 도입은 더 이상 업계에서 사용되지 않습니다. 합성 및 프로그래밍은 ISE, Vivado 및 Numato Lab 구성 도구와 같은 공급업체 도구를 통해 거의 전적으로 처리됩니다.

RTL은 레지스터 전송 레벨을 나타냅니다. 디자이너는 레지스터 전송 논리(Register Transfer Logic) 또는 레지스터 전송 언어(Register Transfer Language)라는 용어를 접할 수도 있는데, 이는 모두 하드웨어 설계 맥락에서 동일한 의미입니다. RTL은 한쪽 끝의 엄격한 동작 모델링과 다른 쪽 끝의 게이트웨이 수준의 순수 구조 사이에 해당하는 디지털 하드웨어 설계를 위한 더 높은 수준의 추상화입니다.

게이트 모델링은 기본 게이트를 사용하여 하드웨어를 설명하는 것을 의미하는데 이는 매우 지루합니다. RTL은 FPGA 프로그래밍의 기본에 사용되는 "의사 코드"라는 용어와 유사하다고 생각할 수 있습니다. 하드웨어 설계를 일련의 단계 또는 각 클록 사이클의 한 레지스터 세트에서 다음 레지스터 세트로의 데이터 흐름으로 설명할 수 있습니다.

RTL은 "데이터 흐름" 설계라고도 합니다. RTL 설계가 준비되면 Verilog, VHDL, SystemVerilog 또는 기타 하드웨어 설명 언어와 같은 언어를 사용하여 이를 실제 HDL 코드로 변환하는 것이 더 쉽습니다.

FPGA는 단순한 게이트 묶음 그 이상입니다. 논리 요소를 구성하고 연결하면 복잡한 논리 회로를 구축하는 것이 가능합니다. 이는 결국 요소 배열로 변환될 수 있는 간단한 형식으로 논리를 표현하는 방법입니다. 이를 수행하는 두 가지 인기 있는 방법은 스키마 및 하드웨어 설명 언어 HDL을 도입하는 것입니다. 널리 사용되기 전에 엔지니어들은 회로도를 사용하여 모든 것을 설계했습니다. 소규모 프로젝트에서는 매우 간단했지만 대규모 프로젝트에서는 고통스러울 정도로 관리하기 어려웠습니다. 수백만 개의 게이트웨이가 있는 펜티엄에 대해 인텔 엔지니어가 어떻게 다이어그램을 그리는지는 상상할 수 없습니다! 이것은 용납할 수 없을 정도로 어렵습니다.

Verilog는 텍스트 형식의 디지털 회로에 사용할 수 있는 HDL 하드웨어 설명 언어입니다. 사용자가 프로그래밍 경험이 있다면 Verilog를 배우는 것은 그리 어렵지 않습니다. VHDL은 업계에서 널리 사용되는 또 다른 인기 있는 HDL입니다. Verilog와 VHDL은 시장에서 어느 정도 동등하게 수용되지만 사용자는 일반적으로 배우기 쉽고 C 언어와 구문 유사성이 있기 때문에 Verilog를 선택합니다.

FPGA는 원하는 하드웨어 구성을 가능하게 하는 빌딩 블록으로 간주될 수 있습니다. CAD를 이용하여 더 짧은 시간에 더 높은 밀도와 향상된 기능성을 갖춘 특수한 형태의 PLD입니다. FPGA는 사용된 프로그래밍 기술에 따라 다양한 변형으로 제공됩니다.

다음을 사용하여 프로그래밍할 수 있습니다.

  1. 안티퓨즈 기술.
  2. Actel의 장치로서 Flash 기술을 기반으로 한 프로그래밍.
  3. FPGA는 재프로그래밍 필드 자체에서 몇 분 만에 수천 번 재프로그래밍할 수 있으며 비휘발성 메모리를 갖추고 있습니다.

SRAM 기술을 기반으로 하는 FPGA는 소량의 추가 회로를 사용하여 작동 중에 무제한 재프로그래밍과 매우 빠른 재구성 또는 부분 재구성을 제공합니다. Altera, Actel, Atmel 및 Xilinx와 같은 대부분의 회사는 이러한 장치를 생산합니다.

구성 가능한 논리 블록

제조업체가 다르고 아키텍처와 기능 세트가 약간 다르지만 대부분의 FPGA는 공통 접근 방식을 공유합니다. 모든 FPGA의 기본 구성 요소 블록은 보드의 다양한 블록을 연결하는 라우팅 채널 계층 구조를 갖춘 프로그래밍 가능한 "입력/출력 블록"으로 둘러싸인 유연한 프로그래밍 가능한 "논리 블록"(CLB)입니다.

또한 클럭을 배포하고 관리하기 위한 DLL과 전용 블록 RAM 메모리로 구성될 수 있으며 주요 빌딩 블록은 논리 셀입니다. 후자는 입력 함수 생성기, 전송 논리 및 저장 요소로 구성됩니다. 생성기는 조회 테이블로 구현되며 소개에 따라 달라집니다. 예를 들어 Xilinx Spartan II에는 4개의 입력 LUT가 있으며 각각 16X1비트 동기식 RAM을 제공하고 멀티플렉서를 시프트 레지스터로 사용하여 버스트 모드에서 데이터를 캡처합니다. 보관 요소는 트리거 가장자리나 슬라이드 레벨에 민감합니다.

  1. 산술 논리에는 전가산기를 작동하고 논리 캐리 라인을 할당하는 XOR 게이트가 포함됩니다.
  2. I/O 블록 및 라우팅 매트릭스. 이 블록에는 광범위한 신호 표준 및 인터페이스를 지원하는 입력 및 출력이 있습니다.

기본 I/O 블록은 다음과 같습니다.

입력 및 출력 경로의 버퍼는 신호를 내부 로직 및 출력 패드로 직접 또는 플립플롭을 통해 라우팅합니다. 이는 사용자가 정의하고 외부에 설치할 수 있는 다양한 지원 신호 표준으로 구성 가능합니다.

라우팅 매트릭스

모든 조립 라인에서 느린 부분이 전체 생산성을 결정합니다. 라우팅 알고리즘은 최적의 성능을 달성하기 위해 가장 효율적인 경로를 설계하는 데 사용됩니다. 라우팅은 서로 다른 CLB 간의 로컬, 범용 라우팅, 블록과 CLB 간의 I/O 라우팅, 성능을 최대화하기 위한 특정 신호 클래스에 대한 전용 라우팅, 매우 큰 팬을 사용하여 클럭 및 기타 신호를 분배하는 글로벌 라우팅과 같은 다양한 수준에서 발생합니다. 밖으로. . FPGA 제품군에는 분산형 RAM LUT를 보완하기 위한 대규모 RAM 블록 구조도 있으며, 그 크기는 다양한 FPGA 장치에 따라 다릅니다.

FPGA 설계에는 본질적으로 모든 VLSI 시스템과 동일한 접근 방식이 포함되며 주요 단계는 설계, 동작 시뮬레이션, 합성, 합성 후 시뮬레이션, 변환, 매핑 및 라우팅, 타이밍 시뮬레이션 및 정적 타이밍 분석과 같은 후속 분석입니다. 컴퓨터에서는 디자인이 정돈되고 타일링된 것처럼 보이지만 실제로는 배치와 라우팅이 좋지 않아 성능이 저하됩니다.

FPGA의 성능을 향상시키기 위해 항상 더 많은 트랜지스터를 사용할 수 있습니다. 서비스 면적이 높습니다. 더 많은 트랜지스터를 설치한다는 것은 대규모 설계가 가능하다는 것을 의미합니다. 누출은 FPGA에 심각한 문제인 동시에 흥미로운 문제입니다. 비동기식 FPGA 아키텍처를 사용하면 글로벌 입력을 줄이고 처리량을 향상시키는 파이프라이닝 기술과 결합할 때 최상의 결과를 얻을 수 있습니다.

게이트 품질 및 문제

코드가 FPGA에 로드될 때마다 노출되어야 하기 때문에 시스템 보안은 항상 주요 관심사였습니다. 이러한 유연성으로 인해 FPGA는 제조 과정에서 악의적인 수정에 취약하므로 비트스트림 암호화가 제때에 구출되었습니다.

경험이 부족한 설계자와 사용자는 FPGA가 자신의 설계에 얼마나 적합한지 딜레마에 직면하는 경우가 많습니다. 제조업체는 종종 "게이트 수"와 같은 측정항목을 제공합니다. 예를 들어, Xilinx FPGA 프로그래밍은 3가지 측정항목을 사용하여 FPGA 용량, 최대 게이트, 최대 메모리 비트 및 일반 게이트 범위를 측정합니다. 일관성이 있는 한 모델 간 마이그레이션은 다소 쉽지만 아키텍처의 다양성과 성능 차이로 인해 여러 공급업체 간의 정확한 비교를 거의 제공하지 않습니다.

가장 좋은 지표는 제공되는 논리적 리소스의 유형과 양을 비교하는 것입니다. 이 외에도 제조업체는 작업에 최소한의 차이를 만드는 기능을 자랑하므로 설계자는 장치에 정확히 필요한 것이 무엇인지 완전히 이해해야 합니다. 예를 들어 Altera의 Stratix II EP2S180에는 약 1,86,576개의 4입력 LUT가 있는 반면 Xilinx Virtex-4 XC4VLX200에는 각각 1,78,176개의 LUT가 포함되어 있습니다. 그러나 설계에 177,000개의 LUT만 필요한 경우에는 이것으로 충분합니다.

RAM이 설계자에게 바람직한 측정 기준이라면 6Mbit Xilinx XC4VLX200이나 9Mbit Altera EP2S180은 덜 광고된 구형 9.9Mbit XC4VFX140 모델보다 선호되지 않습니다.

프로그래밍 언어 및 소프트웨어

초보자를 위한 Altera FPGA 프로그래밍은 언어 선택으로 시작됩니다. C, C++ 또는 시스템 C 옵션을 사용하면 가장 큰 장치의 기능을 활용하는 동시에 현실적인 개발 그래픽을 얻을 수 있습니다. FPGA 설계에 C를 사용할 수 있는 기능은 Handle-C와 같은 도구로 수년 동안 혁신을 목전에 두고 있던 HLS(High Level Synesis)에서 제공됩니다. 이는 최근 Spectra-Q 및 Vivado HLx 계측기 제품군에 각각 HLS를 제공하는 Altera 및 Xilinx의 주요 공급업체에서 현실이 되었습니다.

FPGA 설계에 대한 깊은 이해 없이 FPGA를 통한 성능 향상을 원하는 소프트웨어 개발자를 위한 OpenCL과 같은 다양한 C 기반 초보자 Altera FPGA 프로그래밍 구현을 사용할 수 있습니다.

HDL과 마찬가지로 HLS도 C에서 FPGA 프로그래밍 접근 방식을 사용할 때 제한 사항이 있으며, 기존 HDL과 마찬가지로 개발자는 언어 하위 집합을 사용하여 작업해야 합니다. 예를 들어, 모든 것이 제한되어 있고 크기가 고정되어 있는지 확인해야 하기 때문에 시스템 호출을 합성하고 구현하기가 어렵습니다. HLS의 좋은 점은 자신만의 부동 소수점 알고리즘을 개발할 수 있고 부동 소수점을 고정 소수점으로 변환하는 HLS 도구가 있다는 것입니다.

Xilinx 소프트웨어로 FPGA를 프로그래밍하는 것은 전혀 어렵지 않습니다. Xilinx 제품을 무료로 구매하거나 모델별 가격으로 구매할 수 있습니다. 프로필 웹사이트에서 사용 절차를 명확하게 보여주는 동영상에 액세스할 수 있습니다. 프로그래밍 가능 게이트 어레이를 찾을 때 선택할 수 있는 모든 회사 중에서 Xilinx가 단연 최고입니다. 그들은 이 제품의 제작자이며 수년에 걸쳐 제품을 개선해 왔습니다. 브랜드 소프트웨어는 그 어느 때보다 강력해졌습니다.

디자인 단계

FPGA 프로그래밍 교육은 플랫폼이 인터넷에 잘 알려져 있으므로 온라인으로 수행할 수 있습니다. FPGA를 설정할 때 첫 번째 단계는 회로를 설계하는 것이며, 이를 위해서는 디지털 전자공학에 대한 지식이 필요합니다. 프로그래밍과 달리 프로그램의 아키텍처가 명확하지 않으면 코드 분할을 시작하는 것이 훨씬 더 어렵습니다. 무엇을 구현해야 하는지 명확해지면 Verilog 또는 VHDL 언어 중 하나를 사용하여 회로를 설명하기 시작합니다.

패러다임의 변화를 보여주는 사실은 FPGA 프로그래밍 언어라고 불리는 것이 아니라 기술 언어라는 것입니다. 디지털 회로 테스트의 복잡성으로 인해 일반적으로 이 단계에서는 장비 동작을 시뮬레이션하는 테스트 뱅크가 사용됩니다. 이 유형의 도구를 사용하면 언제든지 신호 상태를 확인하고 원하는 결과를 나타내는 전환이 있는지 확인할 수 있습니다.

세 번째 단계는 회로 합성으로 알려져 있으며 핵심 단계 중 하나입니다. 설명 파일에 따라 사용할 요소와 그 관계를 선택합니다. 이 단계에는 대부분의 상황에서 작업을 촉진하고 자동화하는 도구가 필요합니다.

하드웨어 및 설정

Intel Quartus Prime Software Suite Lite Edition은 FPGA 설계 소프트웨어입니다. 무료로 다운로드할 수 있고 라이센스 파일이 필요하지 않으므로 초보자에게 이상적입니다. 제조업체의 웹사이트에서 소프트웨어를 다운로드할 수 있습니다. 파일 크기가 커서(수 기가바이트) 다운로드하고 설치하는 데 시간이 오래 걸릴 수 있습니다. 시간과 필요한 디스크 공간을 최소화하기 위해 사용자 작업에 필요한 항목만 다운로드하는 것이 좋습니다. 다운로드할 파일을 묻는 메시지가 나타나면 "모두 선택"을 선택 취소하고 Quartus Prime 및 Cyclone V 지원 장치만 선택하세요.

프로젝트 생성 알고리즘:

  1. 새 프로젝트 마법사를 엽니다.
  2. 다음 > 디렉터리 > 이름 > 최상위 개체를 선택합니다.
  3. 예를 들어 "Blink"와 같이 프로젝트를 배치할 디렉터리를 선택하고 intelFPGA_lite 폴더에 배치하지만 아무 곳에나 배치하고 "다음"을 클릭할 수 있습니다.
  4. 디렉터리를 생성하라는 메시지가 나타나면 예를 선택합니다.
  5. "빈 프로젝트"를 선택하고 "다음"을 클릭합니다.
  6. 파일을 추가하고 "다음"을 클릭하세요.
  7. 제품군 - Cyclone V, 장치 - Cyclone V SE, 베이스, 장치 이름: 5CSEBA6U2317을 선택하여 제품군, 장치 및 보드를 설정합니다.
  8. 특정 장치를 선택하려면 5CSEBA6U2317이 나타날 때까지 위쪽/아래쪽 화살표를 눌러 지원되는 장치 목록을 확인해야 합니다.
  9. 사용자는 장치의 전체 이름을 보려면 "이름" 필드를 확장해야 할 수 있습니다. "다음"을 클릭하세요.
  10. EDA 도구를 설정할 때 표준 도구를 사용하므로 변경 사항이 없으므로 "다음"과 "마침"을 클릭하십시오. 요약 화면이 나타납니다.
  11. Verilog를 HDL로 임베딩하여 HDL 파일을 만듭니다.
  12. 파일 탭(메인 창)으로 이동하여 새로 만들기를 선택합니다.
  13. Verilog HDL 파일을 선택하고 확인을 클릭합니다.
  14. "파일" > "다른 이름으로 저장"을 선택합니다.
  15. 파일 이름을 선택하세요. 이는 최상위 파일 이름이며 프로젝트 이름과 동일해야 합니다.
  16. “저장”을 클릭하세요.
  17. Verilog 모듈을 만듭니다.
  18. 아래 Verilog 코드를 복사하여 깜박임.v 창에 붙여넣은 후 코드 파일을 저장합니다.
  19. "분석 및 합성"을 마우스 오른쪽 버튼으로 클릭한 다음 "시작"을 클릭하여 Verilog 코드의 구문 검사 및 합성을 수행합니다.

프로세스가 성공적으로 완료되면 분석 및 합성 옆에 녹색 확인 표시가 나타납니다. 오류가 있는 경우 구문을 확인하고 위의 코드 블록과 정확히 일치하는지 확인하세요.

숙련된 프로그래머라면 누구나 복잡한 프로그램, 심지어 서브루틴이라도 처음에는 올바르게 작동하지 않는다는 것을 알고 있습니다. 경험을 바탕으로 한 인간의 추상화 능력을 통해 그는 가장 작은 세부 사항에 대해 걱정하지 않고 해결책을 찾을 수 있습니다. 그러나 어려운 사실은 프로그램이 내장된 물리적 시스템에서는 모든 것이 작동하기 전에 모든 작은 세부 사항을 고려해야 한다는 것입니다.

주로 기존 공급업체와 독립 도구 공급업체의 FPGA 개발 소프트웨어 도구가 개선되면서 Synplicity, FPGA가 날로 인기를 얻고 있습니다. 이제 FPGA에는 고객이 요구하는 기능을 위한 특수 하드웨어가 포함되기 시작하여 제조업체의 비용이 절감되었습니다. 따라서 미래에는 유연한 코어를 갖춘 견고한 시스템과 저가형 시스템 간에 경쟁이 있을 수 있습니다. FPGA가 대중화됨에 따라 가까운 미래에 비용은 더욱 하락할 것으로 예상됩니다.

제조업체에서는 하이브리드 장치를 만들기 위해 집적 회로에 FPGA를 내장하는 개념을 실험하기 시작했습니다. 여전히 상호 연결 라우팅에 초점이 맞춰져 있으며 CLB 아키텍처의 변화는 줄어들고 있습니다. FPGA가 계속해서 프로세서에 전력을 공급함에 따라 차세대에는 디지털 설계 하드웨어 지식뿐만 아니라 일회성 FPGA 프로그래밍 프로세스에 대한 개발자 경험도 필요합니다. 전반적으로 FPGA는 ASIC 장치에서 시장 점유율을 차지하고 다양한 영역의 많은 애플리케이션을 포괄하는 지배적인 기술이 될 것으로 예상됩니다.

우리는 사람들이 시스템 관리자와 프로그래머의 차이점을 이해하지 못하고 모든 IT 작업자를 프로그래머라고 부르는 경우를 자주 접합니다. 일부는 기분이 상하고 다른 일부는 이미 익숙해졌습니다. 하지만 저는 이 글을 읽는 대부분의 사람들이 이해할 수 있도록 이 차이점을 명확히 하고자 합니다 :)
조직에 IT 부서(엔지니어링) 또는 더 간단히 컴퓨터 부서가 있는 경우 다음과 같은 부서가 있습니다.

- 주요 임무는 서버 및 서버 소프트웨어의 운영, 전화 교환 관리, 보안 정책을 제어하는 ​​것입니다. 일반적으로 이는 조직의 전체 컴퓨터 구조의 두뇌입니다.

기술 지원 전문가(또는 엔지니어)- 일반 사용자의 컴퓨터로 작업하고, 설정하고, 사용자가 현재 문제를 해결하도록 돕고, 사용자 컴퓨터에서 바이러스를 잡는 등의 작업을 수행하는 사람들입니다. 등등. 본질적으로 전문가는 미래의 시스템 관리자입니다. 시스템 관리자는 전문가의 작업을 수행할 수도 있습니다. 전문가는 경영진이 허용하는 경우 시스템 관리자의 작업을 수행할 수 있습니다. 경영진은 시스템 관리자를 더 신뢰하게 됩니다. :)

프로그래머- 일반 사용자가 이해할 수 없는 언어로 끊임없이 다양한 텍스트를 작성하는 사람들입니다. 이러한 텍스트는 유용한 프로그램, 유틸리티 또는 유용한 프로그램을 위한 단순한 모듈(추가 옵션)로 변환됩니다.

2024wisemotors.ru. 작동 방식. 철. 채광. 암호화폐.