Ensino no Departamento de Medição e Controle da Universidade de Tecnologia de Hebei
dever de casa um
1. Descreva resumidamente o processo de desenvolvimento da tecnologia EDA. Descreva resumidamente o que é a tecnologia EDA.
A tecnologia EDA (Electronic Design Automation) é uma ferramenta de software para o design e fabricação de produtos eletrônicos. O processo de desenvolvimento da tecnologia EDA:
- 1960: A primeira geração de ferramentas EDA foi desenvolvida para projeto e simulação de circuitos.
- Década de 1970: Ferramentas EDA desenvolvidas para a segunda geração, que suportam fiação automática bidimensional e melhoram a eficiência do projeto de circuitos.
- Década de 1980: As ferramentas EDA entraram na terceira geração, suportando visualizações de modelos 3D e fornecendo um método de projeto mais intuitivo.
- Década de 1990: Ferramentas EDA desenvolvidas para a quarta geração, suportando a automação do projeto e realizando o gerenciamento integrado do processo de projeto.
- Anos 2000: as ferramentas EDA entraram na quinta geração, suportando simulação e projeto de circuito integrado em grande escala e melhorando ainda mais a eficiência do projeto.
- Década de 2010: Ferramentas EDA desenvolvidas para a sexta geração, suportando design inteligente e realizando design de circuito mais rápido e preciso.
Após décadas de desenvolvimento, a tecnologia EDA tornou-se uma ferramenta necessária para o projeto e fabricação de produtos eletrônicos, fornecendo suporte para a fabricação eficiente e pesquisa e desenvolvimento de produtos eletrônicos.
Recomenda-se usar o PPT como padrão
2. Liste as semelhanças e diferenças entre as linguagens HDL e C.
As semelhanças e diferenças entre HDL e linguagem C são as seguintes:
Semelhanças:
- Ambas são linguagens de programação usadas para descrever a execução de programas de computador.
- Ambos suportam operações básicas, como escrever, compilar e executar programas.
- Ambos têm regras gramaticais estritas que exigem que os programadores escrevam de acordo com as regras.
Diferenças :
- HDL é uma linguagem de alto nível para projeto de sistemas eletrônicos, usada para descrever a operação lógica e o controle de tempo de sistemas eletrônicos. A linguagem C é uma linguagem de programação de uso geral usada para descrever o processo de execução de vários programas de computador.
- O HDL suporta sintaxe relacionada ao design de hardware, como sinais, conexões, temporização, etc. A linguagem C suporta sintaxe de programação geral, como variáveis, operadores, loops, etc.
- Os programas HDL geralmente são usados no projeto e simulação de sistemas eletrônicos e, finalmente, geram circuitos de hardware por meio de síntese. Programas em linguagem C são geralmente usados para escrever programas de computador e, finalmente, compilados para gerar arquivos executáveis.
3. Explique resumidamente as semelhanças e diferenças entre funções de compilação e síntese.
Compiladores e sintetizadores são duas ferramentas de software diferentes usadas para executar funções diferentes.
Um compilador é uma ferramenta de software usada para compilar um programa de linguagem de alto nível em uma linguagem-alvo, como a linguagem de máquina. Um compilador geralmente é usado para compilar um programa em linguagem de alto nível em um programa em linguagem de máquina e executá-lo em um computador.
Sintetizadores são ferramentas de software usadas para sintetizar modelos de design de sistemas eletrônicos em modelos de circuitos. Os sintetizadores são geralmente usados para sintetizar modelos de design de sistemas eletrônicos em modelos de circuitos e arquivos de saída, como diagramas de circuitos e tabelas de fiação.
As semelhanças e diferenças entre compiladores e sintetizadores são as seguintes:
mesmo ponto:
- Ambos são ferramentas de software para converter programas de linguagem de alto nível.
- Ambos exigem que o escritor escreva de acordo com a sintaxe prescrita.
- Ambos precisam ser compilados para gerar o resultado final.
diferença:
- A entrada do compilador é um programa em linguagem de alto nível e a saída é um programa em linguagem de destino. A entrada do sintetizador é o modelo de projeto do sistema eletrônico e a saída é o modelo do circuito.
- Compiladores são geralmente usados para compilar programas de linguagem de alto nível, e sintetizadores são geralmente usados para sintetizar projetos de sistemas eletrônicos.
- O processo de compilação do compilador geralmente inclui apenas uma compilação, enquanto o processo de síntese do sintetizador geralmente inclui várias sínteses, incluindo várias etapas, como verificação de sintaxe, fiação e simulação.
- A linguagem-alvo de um compilador geralmente é a linguagem de máquina, para execução em um computador. A saída de um sintetizador é geralmente um modelo de circuito, que é usado para gerar documentos como diagramas de circuitos e listas de fiação.
4. O que é síntese? Que tipos existem?
A síntese refere-se ao processo de conversão de um modelo de projeto de sistema eletrônico em um modelo de circuito usando ferramentas de automação de projeto eletrônico (EDA). A síntese inclui várias etapas, como verificação de sintaxe, fiação, simulação, etc.
Os tipos de síntese comuns são os seguintes:
- Syntax Check Synthesis: É usado para verificar se a sintaxe do modelo de projeto do sistema eletrônico está correta e a mensagem de erro de saída.
- Síntese de fiação: É usado para converter a operação lógica e a conexão de sinal no modelo de design do sistema eletrônico nas informações de fiação do circuito e arquivos de saída, como tabelas de fiação.
- Síntese de simulação: É usado para simular o modelo de design do sistema eletrônico na operação do circuito e produzir as informações de tempo, forma de onda do sinal e outros dados do circuito.
- Síntese de verificação: É usado para verificar se o modelo de projeto do sistema eletrônico atende às especificações e requisitos do projeto e gera relatórios de verificação e outros documentos.
- Síntese de otimização de circuito: É usado para otimizar o modelo de design do sistema eletrônico para melhorar o desempenho, eficiência e confiabilidade do circuito.
- Síntese de alocação de recursos: É usado para alocar recursos de hardware para operações lógicas, conexões de sinal, controle de tempo e outros recursos no modelo de design de sistema eletrônico para realizar a fiação automática de circuitos.
- Síntese de relógio: usado para distribuir sinais de relógio para controle de tempo em modelos de projeto de sistema eletrônico para controlar a velocidade de operação e sincronização de circuitos.
- Síntese de circuito integrado: é usado para integrar vários modelos de design de sistema eletrônico em circuitos integrados de grande escala e diagramas de circuito de saída, tabelas de fiação, relatórios de simulação e outros arquivos.
- Síntese em nível de placa: usada para integrar vários circuitos integrados em placas de sistema eletrônico e esquemas de placa de saída,
5. Explique os dois conceitos de programação e configuração.
Na tecnologia Electronic Design Automation (EDA), programação e configuração são dois conceitos importantes.
Programação é o processo de escrever programas de computador em uma linguagem de programação. A programação é freqüentemente usada para descrever a execução de programas de computador e executar os programas escritos no computador.
A configuração refere-se ao processo de configuração de parâmetros, conexão de sinal, controle de tempo e outras operações em um sistema eletrônico ou circuito integrado para que ele possa operar de acordo com os requisitos do projeto. A configuração é frequentemente usada para converter um modelo de design de um sistema eletrônico ou circuito integrado em um circuito real que é executado em um dispositivo eletrônico.
A diferença entre programação e configuração é que a programação é descrever o processo de execução de programas de computador escrevendo programas, enquanto a configuração é realizar a configuração de parâmetros, conexão de sinal, controle de tempo e outras operações em sistemas eletrônicos ou circuitos integrados para que possam operar de acordo com os requisitos do projeto.
Recomenda-se consultar o conteúdo no PPT.
6. Quais fatores devem ser considerados no desenvolvimento de aplicações de FPGA e CPLD?
No desenvolvimento de aplicações de FPGA e CPLD, os seguintes fatores devem ser considerados:
- Requisitos funcionais: É necessário considerar os requisitos funcionais da aplicação e selecionar o chip FPGA ou CPLD apropriado.
- Recursos de hardware: É necessário considerar os recursos de hardware do chip FPGA ou CPLD para determinar o número de portas lógicas, capacidade de memória, portas de entrada e saída e outros parâmetros.
- Ferramentas de software: É necessário considerar a linguagem de programação e o software de síntese de FPGA ou CPLD, e determinar a forma de escrever programas e sintetizar circuitos.
- Desempenho do circuito: É necessário considerar o desempenho do circuito do FPGA ou CPLD, como frequência de operação, atraso na fiação, ruído do clock, etc.
- Forma do pacote: É necessário considerar a forma do pacote do FPGA ou CPLD, e selecionar a forma do pacote apropriada para facilitar a conexão com outros circuitos.
- Tecnologia de processo: É necessário considerar a tecnologia de processo do FPGA ou CPLD para determinar o fluxo do processo e os indicadores de desempenho do chip.
- Suporte do fornecedor: É necessário considerar o suporte do fornecedor de FPGA ou CPLD e escolher um fornecedor profissional e confiável para garantir a qualidade e o suporte técnico do chip.
- Custo-benefício: É necessário considerar o custo-benefício do FPGA ou CPLD, determinar o custo de compra e uso do chip, compará-lo com outros chips e escolher um chip com desempenho de custo mais alto.
lição de casa dois
1. Explique as semelhanças e diferenças entre o modo de porta INOUT e BUFFER.
Modo de porta INOUT e BUFFER são dois modos de porta em FPGA, e suas semelhanças e diferenças são as seguintes:
- mesmo ponto:
- Ambos INOUT e BUFFER são modos de porta no FPGA, que são usados para definir as portas de entrada e saída do chip FPGA.
- Ambos INOUT e BUFFER precisam especificar o nome, tipo e largura da porta para definir as portas de entrada e saída do chip FPGA.
- Ambos INOUT e BUFFER podem ser conectados ao circuito externo do chip FPGA para realizar a interação do sinal entre o chip FPGA e o circuito externo.
- diferença:
- A porta INOUT é uma porta bidirecional e pode ser usada tanto como uma porta de entrada quanto como uma porta de saída. A diferença entre a porta BUFFER é que quando os dados precisam ser lidos, apenas o sinal de saída gerado internamente pode ser lido de volta, ou seja, feedback. Por exemplo, ao projetar um contador, o sinal de contagem de saída pode ser definido como BUFFER, para que o sinal de saída de releitura possa ser usado como o valor inicial do próximo valor de contagem.
2. Explique resumidamente como o GAL implementa circuitos combinacionais programáveis e circuitos sequenciais.
Apenas para referência, com base em PPT,
GAL (Generic Array Logic) é um dispositivo lógico programável que pode ser usado para implementar circuitos combinacionais programáveis e circuitos sequenciais.O dispositivo GAL contém alguns blocos lógicos programáveis e cada bloco lógico possui suas próprias portas de entrada e saída, que podem ser usadas para implementar operações lógicas básicas e controle de tempo. O dispositivo GAL também inclui alguns caminhos programáveis, que podem ser usados para conectar diferentes blocos lógicos para realizar conexões de circuitos complexos e transmissão de sinal através de blocos lógicos.
A função programável do dispositivo GAL torna possível realizar uma variedade de diferentes funções de circuito, incluindo circuitos combinacionais programáveis e circuitos sequenciais.
3. Qual é a diferença entre um caminho de interconexão local e um caminho de conexão direta em um dispositivo Cyclone?
Caminhos de interconexão local e caminhos de conexão direta em dispositivos Cyclone diferem das seguintes maneiras:
- O caminho de interconexão local refere-se ao caminho dentro do dispositivo Cyclone, que pode realizar a transmissão do sinal no mesmo bloco lógico. Os caminhos de interconexão local são geralmente usados para implementar operações lógicas básicas e controle de tempo.
- O caminho de conexão direta refere-se ao caminho dentro do dispositivo Cyclone, que pode realizar a transmissão do sinal em diferentes blocos lógicos. Os caminhos de conexão direta são normalmente usados para implementar conexões de circuitos complexos e transmissão de sinal através de blocos lógicos.
- A faixa de transmissão do caminho de interconexão local é limitada ao mesmo bloco lógico, enquanto a faixa de transmissão do caminho de conexão direta pode abranger vários blocos lógicos.
- A velocidade de transmissão do caminho de interconexão local é geralmente mais rápida e pode atender aos requisitos da maioria das aplicações, enquanto a velocidade de transmissão do caminho de conexão direta depende da qualidade e complexidade da fiação e geralmente não é tão rápida quanto a velocidade de transmissão do caminho de interconexão local.
4. Na expressão C<=A+B, os tipos de dados de A, B e C são todos STD_LOGIC_VECTOR, a adição pode ser realizada diretamente? Explique a causa e a solução.
Na expressão C<=A+B, como os tipos de dados A, B e C são todos STD_LOGIC_VECTOR, a operação de adição não pode ser executada diretamente.
O motivo é que os dados do tipo STD_LOGIC_VECTOR não podem ser submetidos diretamente a operações aritméticas, devendo ser convertidos por meio de um método específico para realizar operações de adição.
Existem várias soluções possíveis:
- Use a função de conversão de tipo para converter os dados do tipo STD_LOGIC_VECTOR em dados do tipo inteiro e, em seguida, execute a operação de adição.
- Use a função de conversão de tipo para converter os dados do tipo STD_LOGIC_VECTOR nos dados do tipo de número de ponto flutuante de precisão dupla e, em seguida, execute a operação de adição.
- Use as funções aritméticas integradas do VHDL, como funções assinadas e não assinadas, para converter os dados do tipo STD_LOGIC_VECTOR em um tipo de dados que pode executar operações de adição e, em seguida, realizar operações de adição.
- Use os operadores aritméticos integrados do VHDL, como os operadores SLL e SRL, para converter dados do tipo STD_LOGIC_VECTOR em um tipo de dados que pode ser adicionado e, em seguida, execute a adição.
5. Programação VHDL.
A figura à direita mostra um multiplexador 4 para 1, e o programa VHDL deste circuito é escrito em duas expressões, instrução CASE e IF-ELSE. O tipo de dados dos sinais s1 e s0 selecionados para controle é STD_LOGIC_VECTOR; quando s1='0', s0='0'; s1='0', s0='1'; s1='1', s0='0' e s1='1', s0='1' executam y<=a, y<=b, y<=c, y<=d respectivamente.
library ieee;
use ieee.std_logic_1164.all;
entity Multiplexer is
port (
s1, s0: in std_logic_vector(1 downto 0);
a, b, c, d: in std_logic;
y: out std_logic
);
end entity;
architecture Behavioral of Multiplexer is
begin
process (s1, s0)
-- 在这里实现下面的Process,也就是下面的CASE语句或者IF-ELSE语句
.....
end process;
end architecture;
O programa VHDL para este circuito usando a instrução CASE é o seguinte:
process (s1, s0)
begin
case (s1 & s0) is
when "00" => y <= a;
when "01" => y <= b;
when "10" => y <= c;
when "11" => y <= d;
when others => null;
end case;
end process;
O programa VHDL para este circuito usando a instrução IF-ELSE é o seguinte:
process (s1, s0)
begin
if (s1 = '0' and s0 = '0') then
y <= a;
elsif (s1 = '0' and s0 = '1') then
y <= b;
elsif (s1 = '1' and s0 = '0') then
y <= c;
elsif (s1 = '1' and s0 = '1') then
y <= d;
end if;
end process;
lição de casa 3
1. O que é delta? Qual é o uso de delta em VHDL?
δ é uma palavra-chave especial em VHDL, que representa uma unidade de tempo. Em VHDL, δ pode ser usado para definir a constante de tempo, que representa o intervalo de tempo de mudança de sinal, e é usado principalmente para descrever o atraso de transmissão de sinais em circuitos sequenciais e o intervalo de tempo especificado no controle de temporização.
Por exemplo, defina uma constante de tempo c1 com um valor de 10δ, o que significa que o intervalo de tempo da mudança de sinal é de 10 unidades de tempo.
constant c1 : time := 10δ;
Em VHDL, a utilidade de δ tem principalmente os seguintes pontos:
- Define a constante de tempo, representando o intervalo de tempo entre as mudanças de sinal.
- Defina uma variável de tipo de tempo, que representa o ponto no tempo quando o sinal muda.
- Defina instruções de controle de tempo, que representam o atraso de tempo para executar instruções.
- Use as funções incorporadas relacionadas ao tempo, como a função agora e a função de resolução, para obter as informações de tempo do sistema.
2. Escreva 3 declarações VHDL para julgar a borda de subida do sinal de clock clk no projeto de circuito seqüencial.
- Use a função integrada do VHDL rise_edge:
if rising_edge(clk) then
-- do something
end if;
- Use a instrução "evento":
if clk'event and clk = '1' then
-- do something
end if;
- Use uma instrução "if" com a palavra-chave "clock":
if clk='1' and clock'event then
-- do something
end if;
- Use uma instrução "esperar":
wait on clk;
if rising_edge(clk) then
-- do something
end if;
Esses três métodos de escrita podem ser usados para avaliar a borda de subida do sinal de clock clk e executar uma ação na borda de subida. O método de seleção específico pode ser selecionado de acordo com cenários de aplicação específicos e preferências pessoais.
3. Tente escrever um pedaço de código VHDL para implementar um comparador sem sinal, e a largura dos vetores envolvidos na comparação é n+1.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity UnsignedComparer is
generic (
n: positive
);
port (
a, b: in unsigned(n downto 0);
x1, x2, x3: in std_logic;
x: out std_logic
);
end entity;
architecture Behavioral of UnsignedComparer is
begin
process (a, b)
begin
if a > b then
x <= x1;
elsif a = b then
x <= x2;
else
x <= x3;
end if;
end process;
end architecture;
No modelo de comportamento dessa entidade, o operador de comparação construído em VHDL é usado para realizar a função de comparação de a e b. Especificamente, o operador "=" e os operadores "<" e ">" são usados para julgar, respectivamente, e os resultados correspondentes são gerados de acordo com os resultados da comparação.
Este programa implementa um comparador sem sinal para comparar dois inteiros sem sinal de n+1 bits a e b. Quando a é maior que b, saída x1; quando a é igual a b, saída x2; quando a é menor que b, saída x3.
O programa primeiro declara os arquivos de biblioteca necessários, depois define uma entidade UnsignedComparer e define um parâmetro genérico n na entidade, indicando a largura do vetor envolvido na comparação. A entidade também define cinco portas, que são duas portas de entrada a e b, representando dois inteiros sem sinal a serem comparados; três portas de entrada x1, x2 e x3, representando respectivamente o valor de saída quando a é maior que b, igual a b e menor que b; uma porta de saída x, representando o resultado da comparação.
No modelo de comportamento, o programa define um processo e usa a instrução if para julgar as condições do processo e gera valores diferentes de acordo com os resultados da comparação.
Finalmente, no modelo estrutural, o programa combina o modelo comportamental com entidades para formar um comparador completo.
Este artigo é apenas para referência, por favor, julgue se a resposta está correta ou não, não plagie diretamente.